3.5.2 カスタムテーブルのレコードのインポート
データモデルアプリケーションの[インポート]タブについて説明します。
[インポート]タブでは、Ops Iの導入時などにカスタムテーブルのレコードが記載されたCSVファイルからレコードを一括でインポートし、新規作成、更新ができます。
インポートするジョブのことを、ここではインポートジョブと呼びます。
[インポート]タブを利用するには、Primitiveロール「resource_importer」が付与されている必要があります。
また、インポートするには事前にImportのYAMLファイルを登録する必要があります。ImportのYAMLファイルの詳細は「Import」を参照してください。
(1)インポートジョブ一覧画面
[インポート]タブをクリックするとインポートジョブ一覧画面が表示されます。
インポートジョブ一覧画面ではインポートの状況を確認し、エラーがあればその原因であるCSVファイルの行を特定できます。
登録済みのカスタムテーブルのレコードは、[カスタムデータモデル]タブから確認できます。詳細は「カスタムデータモデル」を参照してください。
インポートジョブ一覧画面は、[インポート]ボタン、[削除]ボタン、インポートジョブ一覧で構成されます。詳細は、以下に示します。
| 構成要素 | 説明 |
|---|---|
| [インポート]ボタン | クリックすると、ファイルアップロード画面が表示されます。 詳細は、「ファイルアップロード画面」を参照してください。 |
| [削除]ボタン | インポートジョブを削除します。 インポートジョブ一覧のチェックボックスにチェックをした項目がある場合に活性化し、クリックすると削除確認ダイアログが表示されます。削除確認ダイアログで「確認しました」チェックボックスにチェックをし、[OK]ボタンをクリックすると、選択していたインポートジョブが削除されます。ただし、ステータスがsucceededまたはerrorのインポートジョブのみ削除できます。 |
| インポートジョブ一覧 | インポートジョブの詳細が一覧で表示されます。 表示される項目は次の通りです。
|
(2)ファイルアップロード画面
インポートジョブ一覧画面で[インポート]ボタンをクリックすると、ファイルアップロード画面が表示されます。
ファイルアップロード画面ではインポート定義を指定し、ファイルをアップロードすることで、カスタムテーブルをインポートできます。
ファイルアップロード画面は[インポート開始]ボタン、[キャンセル]ボタン、インポート定義、ファイルアップロードエリアで構成されます。詳細は、以下に示します。
| 構成要素 | 説明 |
|---|---|
| [インポート開始]ボタン | クリックすると、ファイルアップロードエリアでアップロードしたCSVファイルのレコードを、インポート定義で選択した形式でインポートします。インポート定義で選択されていない、またはインポートファイルアップロードエリアにファイルがアップロードされていない場合、活性化されません。 |
| [キャンセル]ボタン | クリックするとインポートを実行せずに、インポートジョブ一覧画面が表示されます。 |
| インポート定義 | インポートの定義を選択します。 アイコンをクリックすると、[インポート定義]ダイアログが表示され、任意のインポートの定義を選択したうえで[OK]ボタンをクリックすると、[インポート定義]ダイアログが閉じ、選択した値が入力されます。表示されるインポートの定義は事前にImportのYAMLファイルで定義する必要があります。ImportのYAMLファイルのnameまたはlabelラベルには、インポート先のテーブルがわかるような名称を設定してください。詳細は「カスタムテーブルのレコードのインポート」を参照してください。 |
| ファイルアップロードエリア | インポートするカスタムテーブルのレコードが記載されたCSVファイルをアップロードします。 「追加するファイルをドロップまたは選択してください」の「選択」のリンクをクリックすると、ファイル操作ダイアログが表示されます。ファイル操作ダイアログから選択、または点線内の領域にCSVファイルをドロップしてアップロードしてください。複数のCSVファイルを同時にアップロードすることはできません。アップロードできるファイルは以下の通りです。
|
CSVファイルは1行目にデータ項目をカンマ(,)で区切って入力し、2行目からインポートする値を1行目と同じ順番になるようにカンマ(,)で区切って入力してください。
1つのデータ項目に複数の値を指定する場合、セミコロン(;)で区切ってください。
カスタムテーブルのレコードのインポートでは、インポート時の条件によってインポート時の動作が変わります。
CSVファイルとカスタムテーブルがマッピングされている場合、CSVファイルのレコードがカスタムテーブルに反映されます。
CSVファイルとカスタムテーブルがマッピングされていない場合、以下の条件によって反映されるレコードが異なります。
- レコードの新規作成か更新か
- Ops Iのデフォルトのカラムかユーザーが作成したカラムか
上記の条件の組み合わせと動作は次の表のとおりです。
| レコードの動作※1 | デフォルトのカラムか※2 | 動作 |
|---|---|---|
| 新規作成 | Yes | 以下の値が設定される。
|
| No | nullが設定される。ただし、DatamodelのYAMLファイルのnot-nullラベルがtrueに設定されたカラムの場合、エラーとなる。また、デフォルト値が設定されている場合、デフォルト値が入る。 | |
| 更新 | Yes | 以下の値で更新される。
|
| No | 更新されない。 |
id、created_on、updated_on、created_by、updated_by、sys_customer
注意事項
Ops Iのカスタムテーブルでは、各レコードのidの値がテーブル内で一意である必要がありますが、idを含むレコードをインポートする場合、idが重複したレコードが登録されるおそれがあるという問題があります。idを含めたレコードをインポートする場合は、idのみを一意識別子(coalesce: true)として設定することで、この問題を回避できます。
メモOps Iのカスタムテーブルから取得したレコードを別のOps Iにインポートする場合、idを一意識別子(coalesce: true)として設定することを推奨します。
それ以外の場合は、CSVファイルの中で適切なレコードを一意識別子に設定し、columnMappingsのtargetにはidを設定しないことを推奨します。targetにidを設定しない場合、Ops I内で一意となる値がidに自動的に設定されます。
カスタムテーブルのレコードをインポートする際、DatamodelのYAMLファイルのカラムのタイプに対応するCSVファイルのデータの形式は次の通りです。DatamodelのYAMLファイルのカラムタイプの詳細は「(表)カラムのタイプ」を参照してください。
(表)DatamodelのYAMLファイルのカラムのタイプに対応するCSVファイルのデータの形式
| DatamodelのYAMLファイルのカラムのタイプ | CSVファイルのデータの形式 |
|---|---|
| integer | 整数 |
| numeric | 小数点を含む数字 |
| varchar | 文字列 デフォルトの文字列の最大長は40文字です。「varchar(文字数)」と指定することで、文字列の最大長を変更できます。指定できる文字列の最大長は10,485,760文字です。 |
| text | 文字列 |
| timestamp | YYYY-MM-DDThh:mm:ss±hh:mmの形式 例)2026-01-05T14:30:00+09:00 |
| date | 次のいずれかの形式
例)2026-01-05 |
| time | hh:mm:ssの形式 例)14:30:00 |
| boolean | trueまたはfalse |
| enum | DatamodelのYAMLファイルで定義された形式 |
| inet | CIDR(IPv4)の形式 例)192.168.1.1 |
| decimal | 小数点を含む数字 |
| uuid | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXの形式 「X」には半角英数字(a~f 0~9)が入ります。 例)550e8400-e29b-41d4-a716-446655440000 メモRFC9562(バージョン:1~8)に準拠したuuidを使用してください。 |
<記載例>
DatamodelのYAMLファイル、ImportのYAMLファイル、CSVファイルの記載例は次の通りです。
■DatamodelのYAMLファイル
apiVersion: 1.0
kind: datamodel
type: resource
name: device_request_datamodel
label: device_request_datamodel
description: device_request_datamodel
tables:
- name: device_request_table
label: device_request_table
columns:
- name: title
label: タイトル
type: varchar
- name: device_type
label: 機器種別
type: enum
enum:
- name: company_cell_phone
label: 社用携帯
- name: tablet
label: タブレット端末
- name: note_pc
label: ノートPC
- name: desktop_pc
label: デスクトップPC
- name: num_request
label: 個数
type: integer
default: 1
- name: request_date_time
label: 申請日時
type: timestamp
- name: note
label: 備考
type: text
■ImportのYAMLファイル
apiVersion: 1.0
kind: import
type: resource
name: device_request_import
label: 機器申請データインポート
description: device_request_tableへのデータインポート定義
includes:
- kind: datamodel
name: device_request_datamodel
# インポート先テーブル名
targetTable: device_request_table
# CSVカラムとDBカラムのマッピング
columnMappings:
# 一意識別子(既存レコード検索用キー)
- source: id
target: id
coalesce: true
# タイトル(最大255文字)
- source: title
target: title
validation:
format: regex
pattern: ^.{1,255}$
# 機器種別
- source: device_type
target: device_type
# 申請個数(1-999の整数)
- source: num_request
target: num_request
validation:
format: regex
pattern: ^[1-9][0-9]{0,2}$
# 申請日時(任意)
- source: request_date_time
target: request_date_time
# 備考(任意、バリデーションなし)
- source: note
target: note
■CSVファイル
550e8400-e29b-41d4-a716-446655440000,ノートPCの申請,note_pc,1,2026-02-10 09:00:00,開発用ノートPCが必要
6ba7b810-9dad-11d1-80b4-00c04fd430c8,社用携帯の申請,company_cell_phone,2,2026-02-10 10:30:00,営業部門用に2台
7c9e6679-7425-40de-944b-e07fc1f90ae7,タブレット端末の申請,tablet,3,2026-02-11 14:15:00,現場作業用
8f9e6679-8536-41ef-a55c-f18ed2f90bf8,デスクトップPCの追加申請,desktop_pc,1,2026-02-11 16:45:00,設計部門の増員対応
アイコンをクリックすると、[インポート定義]ダイアログが表示され、任意のインポートの定義を選択したうえで[OK]ボタンをクリックすると、[インポート定義]ダイアログが閉じ、選択した値が入力されます。表示されるインポートの定義は事前にImportのYAMLファイルで定義する必要があります。ImportのYAMLファイルのnameまたはlabelラベルには、インポート先のテーブルがわかるような名称を設定してください。詳細は「