記事
· 2023年6月29日 3m read

CSVファイルをテーブルにインポートする方法(LOAD DATA編)

これは 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を読み込む場合の手順を説明します。

ProductID,ProductName,Price
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
)

 

2) LOAD DATAを実行する

ヘッダ付きのUTF-8で保存したCSVファイルを利用する場合のコマンド指定方法は以下の通りです。

LOAD DATA FROM FILE 'ファイルフルパス'
 INTO スキーマ名.テーブル名
 USING {"from":{"file":{"charset":"UTF-8","header":true}}}

実際の実行例は以下の通りです。

LOAD DATA FROM FILE 'c:\temp\test.csv'
 INTO Test.Product
 USING {"from":{"file":{"charset":"UTF-8","header":true}}}

※LOAD DATAの実行にはJavaの外部サーバを利用しています。初回実行時、外部サーバを開始するため少し時間がかかります。

 

3) 実行結果を確認する

ロードに失敗してスキップされたレコード数を確認する場合

select * from %SQL_Diag.Result

ロードに失敗した各レコードに関する詳細情報を参照する場合

select * from %SQL_Diag.Message

%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

 

LOAD DATAについて詳細は、ドキュメント「LOAD DATA」もご参照ください。

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください