概要
Easy ImportでImport Setを利用してデータをインポートすると文字列が切り捨てられる場合や参照フィールドが「Unknown」になる。下のスクリーンショットでは「モデルID」が正しく読み取られずに「Unknown」に設定されています。
問題の再現
今回の例ではEasy Importを利用してレコードをインポートします。2回目にインポートした場合にモデルID列が正しくインポートされないことが確認できます。
- 本例では次のようなExcelデータを新規にIPスイッチテーブルにインポートします。
- 新規にインポートする場合は次のように正しくインポートされます。
- インポートするExcelシートを修正して、40文字以上のモデルIDを指定します。
- データを読込んだ後のデータプレビューを開くとモデルIDの値が切り捨てられていることが確認できます。
- 切り捨てられていることを無視してインポートを継続するとモデルIDが「Unknown」になります。
原因
Easy Importは自動的にインポートセットテーブルを作成します。その時にテーブルのフィールド長さを最小値以上かデータの最大文字列数に設定します。そのため、一回目にデータをインポートする場合は文字列は切り捨てられませんが、2回目は1回目で作成されたインポートセットテーブルが使われるため最初にインポートした文字列よりも長い文字列があると文字が切り捨てられます。
対策
2回目からも文字列が切り捨てられないようにするには1回目で作成されたインポートセットテーブルのフィールド長を大きくするか、インポートセットテーブルを毎回初期化する方法があります。
インポートセットテーブルのフィールド長を大きくする
先ずはインポートセットテーブルのフィールド長を多くする手順を説明します。
- アプリケーションナビゲータから「インポート」を検索して詳細下の「Import Sets」を選択します。
- インポートセットターブル名をメモします。
今回のEasy Importで作成されたテーブル名は「u_imp_tmpl_cmdb_ci_ip_switch」です。 - アプリケーションナビゲータからメモしたインポートセット名+「.LIST」を検索するとインポートセットテーブルが表示されます。
- ヘッダを右クリックして「構成」ー「辞書」を選択します。
- 文字列が切り捨てられたフィールドを選択します。
例では「u_モデル_id」です。 - 文字列の最大長が「40」に設定されています。そのためモデルIDが40文字以上の場合は切り捨てられます。
- 最大長を「100」に増やし、「更新」ボタンを押下します。
- Excelで再びモデルIDが40文字以上のレコードを作成します。
- プレビューでモデルIDが切り捨てられていないことを確認します。
- 再びExcelデータをインポートすると切り捨てられなくインポートされることを確認します。
インポートセットテーブルの削除する
インポートセットテーブルを修正する代わりにデータをインポートする毎にインポートセットテーブルを削除すると、インポートする毎に新規にテーブルが作成されます。新規に作成される場合なフィールド長はインポートするデータフィールドの最大値になるので問題を回避することができます。
次ぎの手順でインポートセットテーブルを削除します。
- アプリケーションナビゲータから「インポート」を検索して、インポートセットテーブル下の「クリーンアップ」を選択します。
- 「削除できる利用可能なテーブル」からインポートセットテーブルを選択して「>」アイコンを押下して右の「これらのテーブルを削除」に移します。
- 「関連する変換マップの削除」をチェックして、「Delete data only」のチェックを外した後に「クリーンアップ」ボタンを押下します。
- インポートセットテーブルを削除した後にデータをインポートすると文字データが切り捨てられなくなります。
以上