如何从批处理文件执行 postgres 的 sql 查询?

新手上路,请多包涵

我需要从批处理文件执行 SQL。我正在执行以下连接到 Postgres 并从表中选择数据

C:/pgsql/bin/psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME%
select * from test;

我能够连接到数据库,但是出现错误

‘select’ 不是内部或外部命令、可运行程序或批处理文件。

有没有人遇到过这样的问题?

这是我正在尝试的查询之一,在 shell 脚本中也有类似的工作,(如果有的话,请忽略查询中的语法错误)

 copy testdata (col1,col2,col3) from '%filepath%/%csv_file%' with csv;

原文由 Ketu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 713
2 个回答

您可以将其通过管道传输到 psql

 (
echo select * from test;
) | C:/pgsql/bin/psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME%

当右括号是 SQL 查询的一部分时,它们必须用三个插入符号进行转义。

 (
echo insert into testconfig(testid,scenarioid,testname ^^^) values( 1,1,'asdf'^^^);
) | psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME%

原文由 jeb 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果在 Linux 上运行,这对我有用(需要使用您的用户、数据库名称等更新下面的值)

 psql "host=YOUR_HOST port=YOUR_PORT dbname=YOUR_DB_NAME user=YOUR_USER_NAME password=YOUR_PASSWORD" -f "fully_qualified_path_to_your_script.sql"

原文由 grepit 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进