これは InterSystems FAQ サイトの記事です。
LOAD DATAは、バージョン2022.1から追加されたSQLコマンドで、CSVファイルやJDBCソースからデータをテーブルにロードするコマンドです。
データが存在するテーブルにLOAD DATAを実行した場合、データは追記されます。
※ バージョン2022.1をご利用いただく場合は、バージョン2022.1.3 をご利用ください。(2022.1.0~2022.1.2は、使用するJARファイルの不備により動作しません。)
LOAD DATAを利用する際、Javaの外部サーバ(Javaゲートウェイ)を使用するため、IRISをインストールした環境にJavaのインストールが必要です。
サポート対象のJavaバージョンについては、ドキュメントの「サポート対象Javaテクノロジ」をご参照ください。
LOAD DATAを利用するためには、Javaインストール済、かつ外部言語サーバで %Java_Server 設定済の環境である必要があります。
※ 環境変数JAVA_HOMEの設定がある場合は以下 %Java_Serverの設定は不要です。
%Java_Server 設定詳細は以下の通りです。
- Javaホームディレクトリ:インストールしたJavaのホームディレクトリを指定します。
利用手順は以下の通りです。
以下のCSVを読み込む場合の手順を説明します。
P0101,貼るホッカイロミニ(10個),300
P0102,貼るホッカイロ(10個),460
P0103,貼るホッカイロ足裏(30個),1000
1) テーブル定義の作成
ロードしたいCSVのセルの並びに合わせてテーブル定義を作成します。
CREATE TABLE Test.Product(
ProductID VARCHAR(10) PRIMARY KEY,
ProductName VARCHAR(50),
Price INTEGER
)
SQLSQL
2) LOAD DATAを実行する
ヘッダ付きのUTF-8で保存したCSVファイルを利用する場合のコマンド指定方法は以下の通りです。
LOAD DATA FROM FILE 'ファイルフルパス'
INTO スキーマ名.テーブル名
USING {"from":{"file":{"charset":"UTF-8","header":true}}}
SQLSQL
実際の実行例は以下の通りです。
LOAD DATA FROM FILE 'c:\temp\test.csv'
INTO Test.Product
USING {"from":{"file":{"charset":"UTF-8","header":true}}}
SQLSQL
※LOAD DATAの実行にはJavaの外部サーバを利用しています。初回実行時、外部サーバを開始するため少し時間がかかります。
3) 実行結果を確認する
ロードに失敗してスキップされたレコード数を確認する場合
select * from %SQL_Diag.Result
SQLSQL
ロードに失敗した各レコードに関する詳細情報を参照する場合
select * from %SQL_Diag.Message
SQLSQL
%SQL_Diag.Message テーブルには、%SQL_Diag.Result の外部キーが含まれているため、以下のように2つのテーブルを組み合わせてエラー詳細を確認することもできます。
SELECT * FROM %SQL_Diag.Message
JOIN %SQL_Diag.Result ON %SQL_Diag.Result.resultId = %SQL_Diag.Message.diagResult
where %SQL_Diag.Result.resultId=1
SQLSQL
LOAD DATAについて詳細は、ドキュメント「LOAD DATA」もご参照ください。