如果我有这样的查询:
SELECT key1, key2, text FROM mytable WHERE...
我希望保存结果,使每个结果都以自己的文件结束,文件根据key1和key2的值命名(加上时间戳以确保唯一的文件名)。
示例 - 如果这是我的查询结果:
key1 | key2 | text
12345 | A | a bunch of text
23513 | Q | a bunch more text
我希望最终得到两个文件,一个名为12345_D_139050886127
,其中包含a bunch of text
,另一个名称类似于23513_Q_139050886131
,包含a bunch more text
。
我的问题是:是否有postgresql工具可以轻松地执行此操作,或者我应该只将查询结果导出到CSV文件,然后编写perl脚本或其他任何内容将其分解为多个小文件。后一种方法的缺点是至少暂时需要两倍的磁盘存储空间 - 查询回复可能非常大(但这不应该是一个大问题)。
答案 0 :(得分:0)
如果您能够编写一个简单的Java程序,它可以轻松完成工作。此外,如果发生错误,您将很快看到错误是否涉及数据库访问,文件写入或其他任何事情。最后,改进或更新你的程序将是小菜一碟;)
答案 1 :(得分:0)
您可以使用PL / Perl,PL / Python或其他任何方式执行此操作,只要您要写入的位置是PostgreSQL服务器有权访问的位置。
那就是说,没有必要。您可以通过从游标中读取,或者仅使用fetchrow_arrayref
逐步从服务器读取数据,一次将行消耗到脚本中。