★2022年最新★入門!VBS×RDSでPostgreSQLの¥Copyを使う方法

PostgreSQLでは、ファイルとテーブルの間でデータをコピーするために「copyコマンド」と「copyメタコマンド」が用意されています。

違いについては、こちらのQiitaの記事がわかりやすく参考になります。

最近はRDSなどクラウド環境を使うことが多く、「copyメタコマンド」を使うケースが多いかと思います。

今回はVBSで実行端末のファイルに「copyメタコマンド」を使ってデータをコピーするための対策案を考えてみました。

結論:psql.exeを使ってcopyメタコマンドを実行する

VBSではADOを使って操作する事が多いと思います。

しかし、ADOではメタコマンドを利用することができません

そこで、VBSでpsql.exeでメタコマンドを実行するように対応します。

VBSでpsql.exeを使ってcopyメタコマンドを実行するコードサンプル

VBSでpsql.exeを実行す方法の詳細はこちらの記事を参考にしてください。

  • ソース例
' === バッチファイルの作成 ===' バッチのソースコードを作成set bat_code = "psql -h xx.xx.xx -h foo -c ""¥copy (select * from table1) to C:\work\xx.dat """' バッチファイルを作成Set fso = CreateObject("Scripting.FileSystemObject")Set file = fso.OpenTextFile("C:\work\test.bat", 2 , True)file.WriteLine bat_scodefile.close'  ===  バッチを実行 === Set oWshShell = CreateObject("WScript.Shell")oWshShell.Run "C:\work\test.bat", 1, True
広告

まとめ

ADOは簡単にSQL操作ができる反面、制約も含んでいます。

メタコマンドを使いたい場合、ADOでは実現ができないため今回はpsql.exeを使って実行するようにしました。

結構簡単にできるので、利用する機会のある方はぜひ試してみてください。