如何在命令行中运行内联SQL脚本?

问题描述 投票:0回答:3

我无法通过命令行执行 SQL 脚本,这就是我所遇到的

"C:\..\psql.exe" -h my_server_host -U username -c 'CREATE DATABASE test;'

我收到此错误:

psql: warning: extra command-line argument "test;'" ignored
psql: FATAL:  database "DATABASE" does not exist

我使用的是带有 Postgresql 9.3 的 Windows 7。

知道该怎么做吗?

postgresql command-line psql
3个回答
14
投票

您必须连接到数据库才能运行命令,即使您想运行

CREATE DATABASE
,所以:

"C:\..\psql.exe" -h my_server_host -U usr -c 'CREATE DATABASE test;' postgres

Windows 的双引号,如 Craig 提供的:

... "CREATE DATABASE test;" ...

在这里连接到默认维护数据库
postgres

不过,对于当前的目的,有一个更好的选择:直接从命令行createdb


1
投票

Windows 的

cmd.exe
要求参数使用双引号,而不是单引号。

"CREATE DATABASE test;"

http://blogs.msdn.com/b/oldnewthing/archive/2010/09/17/10063629.aspx


1
投票

使用以下脚本执行查询:

@echo off
SET server=my_server_host
SET database=my_db_name
SET port=my_db_port
SET username=my_user_name
SET query="CREATE DATABASE test;"
for /f "delims=" %%a in ('chcp ^|find /c "932"') do @ SET CLIENTENCODING_JP=%%a
if "%CLIENTENCODING_JP%"=="1" SET PGCLIENTENCODING=SJIS
if "%CLIENTENCODING_JP%"=="1" SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "
REM Run psql
"C:\Program Files\PostgreSQL\9.3\bin\psql.exe" -h %server% -U %username% -d %database% -p %port%  -c %query%
pause
© www.soinside.com 2019 - 2024. All rights reserved.