1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ServiceNow ー データをインポートすると参照フィールドが「Unknown」になる

Posted at

概要

Easy ImportでImport Setを利用してデータをインポートすると文字列が切り捨てられる場合や参照フィールドが「Unknown」になる。下のスクリーンショットでは「モデルID」が正しく読み取られずに「Unknown」に設定されています。
import_set_data_trunc_22.png

問題の再現

今回の例ではEasy Importを利用してレコードをインポートします。2回目にインポートした場合にモデルID列が正しくインポートされないことが確認できます。

  1. 本例では次のようなExcelデータを新規にIPスイッチテーブルにインポートします。
    import_set_data_trunc_10.png
  2. 新規にインポートする場合は次のように正しくインポートされます。
    import_set_data_trunc_11.png
  3. インポートするExcelシートを修正して、40文字以上のモデルIDを指定します。
    import_set_data_trunc_20.png
  4. データを読込んだ後のデータプレビューを開くとモデルIDの値が切り捨てられていることが確認できます。
    import_set_data_trunc_21.png
  5. 切り捨てられていることを無視してインポートを継続するとモデルIDが「Unknown」になります。
    import_set_data_trunc_22.png

原因

Easy Importは自動的にインポートセットテーブルを作成します。その時にテーブルのフィールド長さを最小値以上かデータの最大文字列数に設定します。そのため、一回目にデータをインポートする場合は文字列は切り捨てられませんが、2回目は1回目で作成されたインポートセットテーブルが使われるため最初にインポートした文字列よりも長い文字列があると文字が切り捨てられます。

対策

2回目からも文字列が切り捨てられないようにするには1回目で作成されたインポートセットテーブルのフィールド長を大きくするか、インポートセットテーブルを毎回初期化する方法があります。

インポートセットテーブルのフィールド長を大きくする

先ずはインポートセットテーブルのフィールド長を多くする手順を説明します。

  1. アプリケーションナビゲータから「インポート」を検索して詳細下の「Import Sets」を選択します。
    import_set_data_trunc_30.png
  2. インポートセットターブル名をメモします。
    今回のEasy Importで作成されたテーブル名は「u_imp_tmpl_cmdb_ci_ip_switch」です。
    import_set_data_trunc_31.png
  3. アプリケーションナビゲータからメモしたインポートセット名+「.LIST」を検索するとインポートセットテーブルが表示されます。
    import_set_data_trunc_32.png
  4. ヘッダを右クリックして「構成」ー「辞書」を選択します。
    import_set_data_trunc_33.png
  5. 文字列が切り捨てられたフィールドを選択します。
    例では「u_モデル_id」です。
    import_set_data_trunc_34.png
  6. 文字列の最大長が「40」に設定されています。そのためモデルIDが40文字以上の場合は切り捨てられます。
    import_set_data_trunc_35.png
  7. 最大長を「100」に増やし、「更新」ボタンを押下します。
    import_set_data_trunc_36.png
  8. Excelで再びモデルIDが40文字以上のレコードを作成します。
    import_set_data_trunc_40.png
  9. プレビューでモデルIDが切り捨てられていないことを確認します。
    import_set_data_trunc_41.png
  10. 再びExcelデータをインポートすると切り捨てられなくインポートされることを確認します。
    import_set_data_trunc_42.png

インポートセットテーブルの削除する

インポートセットテーブルを修正する代わりにデータをインポートする毎にインポートセットテーブルを削除すると、インポートする毎に新規にテーブルが作成されます。新規に作成される場合なフィールド長はインポートするデータフィールドの最大値になるので問題を回避することができます。
次ぎの手順でインポートセットテーブルを削除します。

  1. アプリケーションナビゲータから「インポート」を検索して、インポートセットテーブル下の「クリーンアップ」を選択します。
    import_set_data_trunc_50.png
  2. 「削除できる利用可能なテーブル」からインポートセットテーブルを選択して「>」アイコンを押下して右の「これらのテーブルを削除」に移します。
    import_set_data_trunc_51.png
  3. 「関連する変換マップの削除」をチェックして、「Delete data only」のチェックを外した後に「クリーンアップ」ボタンを押下します。
    import_set_data_trunc_52.png
  4. インポートセットテーブルを削除した後にデータをインポートすると文字データが切り捨てられなくなります。

以上

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?