postgresql - 如何使用 Windows 批处理脚本将 PostgreSQL 查询结果导出到 csv 文件(不使用“\COPY”)
问题描述
我想使用 Windows 批处理脚本将 PostgreSQL 查询结果导出到 csv 文件中(不使用“\COPY”,因为它正在创建权限问题)。我目前正在使用以下脚本执行 psql 脚本并以 PIPE("|") 分隔格式写入文件。
@echo off setlocal set PGPASSWORD='MyPassword' "psql.exe" -h myIP -p myPORT -U myUSER -d myDB -t -o "D:\Test\myfile.csv" -f D:\Raihan\Test\my_sql_script.sql
SQL 文件(mysql_script.sql):
SELECT ID,NAME from MYTABLE
该代码正在将文件(myfile.csv)作为管道分隔符写入如下所示,每个管道后有一个额外的空格(这是我也面临的另一个问题)
1| Raihan
2| Kalu
3| Param
我可以使用下面的脚本轻松地用逗号(,)替换管道和空格,但我的问题是它需要大量时间,因为它正在逐行转换。
FOR /F "usebackq tokens=1-2 delims=| " %%I in (D:\Test\myfile.csv) DO echo %%I,%%J >> D:\Test\myfile_2.csv
使用上述脚本无法按时转换数百万数据。
编辑:我使用了下面的代码
\COPY (select * from some_table) TO 'D:/tmp/some_file.csv' CSV HEADER;
这是给出错误
psql:D:/Raihan/Test/test_sql.sql:2: ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone. Press any key to continue . . .
注意:我的数据库服务器位于运行批处理文件的另一台服务器中。如果我可以运行 /COPY 而不是超级用户,它也将解决我的问题。
解决方案
推荐阅读
- css - 如何正确使用 --deploy-url + css 背景 url
- python - 如何在没有可见空白的情况下扩展/减少 QTable 视图
- django - 在 django-react-redux 中对文件的 PUT 请求
- php - strtotime() 期望参数 1 是字符串,laravel 中给出的数组
- react-native - 像 Flipkart 一样反应原生的粘性页脚
- c++ - 缺少别名模板的 C++ 参数列表
- python - 部署网站时未找到模块错误
- qt - 在两个 qml 文件中使用 qmlRegisterType 时出现问题
- react-native - 多列上的 SectionList React Native
- tkinter - 如何在 tkinter 列表框中正确对齐文本?