記事
· 2022年5月29日 2m read

プログラムで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
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください