プログラムでCSVファイルをテーブルにインポート/テーブルからCSVファイルにエクスポートする方法
これは InterSystems FAQ サイトの記事です。
InterSystems IRIS/Caché の管理ポータルメニュー:SQLデータインポートウィザードの処理で行うようなCSVファイルをテーブルへインポート、テーブルからファイルにエクスポートする方法をプログラムで実行することができます。
※ サンプルはバージョン 2017.1以降で動作確認しています。
※ バージョン 2016.2.3以前でお試しいただく場合は、SQL.Utilsクラス の20行目をコメント化してからご利用ください。
//Set mgr.IQN=$$$BuildIQN(SchemaName,TableName)
サンプルの使用手順
サンプルはこちらにあります👉https://github.com/Intersystems-jp/DataImportExport
CSVファイルをテーブルへインポート、テーブルからファイルへエクスポートの処理は、SQL.Utilsクラスを使用しています。
1) サンプルのインポート
実行したいネームスペースに SQL.Utilsクラスをインポートします。
スタジオをご利用の場合は、ファイルをドラッグ&ドロップするとインポートできます。
管理ポータルでインポートされる場合は、[システムエクスプローラ] > [クラス] > (ネームスペース選択) > インポートボタンクリック でファイルを選択し、インポートを行います。
VSCodeをご利用の場合は、使用したいIRISに接続し、SQL.Utilsクラスを保存(Ctrl+S)するとインポートされます。
2)サンプルの実行方法
A) SQLで試したい場合 テストで使用するテーブル定義の作成、テストデータの追加、サンプルの実行など、SQLで実行できます。 手順は、Test.sqlをご覧ください。
B) クラスで試したい場合 SQL.TestTbl.cls をインポートします。
テストデータの作成は以下のメソッドを実行してください。
do ##class(SQL.TestTbl).CreateData()
テーブルからCSVファイルへのエクスポートには、SQL.UtilsクラスのCSVExport()メソッドを使用します。 実行例は以下の通りです。
USER>do ##class(SQL.Utils).CSVExport("c:\temp\test.csv","SQL.TestTbl")
Name || %Library.String
Email || %Library.String
Memo || %Library.String
ルーチンのコンパイル中 : SQLExport4.mac
テストデータの一括削除には、以下のメソッドを実行してください。
do ##class(SQL.TestTbl).DestroyData()
CSVファイルからテーブルへのインポートには、SQL.UtilsクラスのCSVImport()メソッドを使用します。 実行例は以下の通りです。
USER>do ##class(SQL.Utils).CSVImport("c:\temp\test.csv","SQL.TestTbl")
adding Name
adding Email
adding Memo
Importing data
Building indices...
Import complete: 4 rows inserted into SQL.TestTbl