プログラミング

VBS×RDSでPostgreSQLの¥Copyを使う方法

2021年2月2日

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_scode
file.close

'  ===  バッチを実行 === 
Set oWshShell = CreateObject("WScript.Shell")
oWshShell.Run "C:\work\test.bat", 1, True

まとめ

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

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

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

-プログラミング
-, , ,