我无法通过命令行执行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
我在Windows 7上使用Postgresql 9.3。
知道怎么做吗?
答案 0 :(得分:7)
您必须连接到数据库才能运行命令,即使您要运行CREATE DATABASE
,所以:
"C:\..\psql.exe" -h my_server_host -U usr -c 'CREATE DATABASE test;' postgres
(作为@Craig cleared up,它必须是Windows的双引号。)
在此处使用默认维护db postgres
。
但目前有一个更好的选择:createdb直接来自命令行。
答案 1 :(得分:1)
Windows的cmd.exe
期望参数双引号,而不是单引号。
"CREATE DATABASE test;"
http://blogs.msdn.com/b/oldnewthing/archive/2010/09/17/10063629.aspx
答案 2 :(得分:0)
使用以下脚本执行查询:
@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