如何从批处理文件执行postgres的sql查询?
我需要从批处理文件执行SQL。 我正在执行以下操作以连接到Postgres并从表中选择数据如何从批处理文件执行postgres的sql查询?,sql,postgresql,batch-file,command-prompt,Sql,Postgresql,Batch File,Command Prompt,我需要从批处理文件执行SQL。 我正在执行以下操作以连接到Postgres并从表中选择数据 C:/pgsql/bin/psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME% select * from test; 我能够连接到数据库,但是我得到了错误 “select”未被识别为内部或外部命令, 可操作的程序或批处理文件 有人面临过这样的问题吗 这是我正在尝试的查询之一,类似的东西在shell脚本中工作,如果有任何语法错误,请忽略查询中的语法错误
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;
您不能将查询放在单独的行上,批处理解释器将假定它是另一个命令,而不是psql的查询。我相信您也需要引用它。使用-f参数传递批处理文件名
C:/pgsql/bin/psql -h %DB_HOST% -p 5432 -U %DB_USER% -d %DB_NAME% -f 'sql_batch_file.sql'
-f文件名
-file=文件名
使用文件名作为命令源,而不是以交互方式读取命令。处理完文件后,psql终止。这在许多方面相当于meta命令\i
如果文件名为-hyphen,则读取标准输入,直到出现EOF指示或\q meta命令。但是请注意,在这种情况下,Readline并没有像指定了-n一样使用
请参阅
1] 如果使用sql传递文件,请使用-f或-file参数
2] 如果要传递单个命令,请使用-c或-command参数,您可以通过管道将其传递到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%
我同意蜘蛛侠的观点:
1] 如果使用sql传递文件,请使用-f或-file参数
当您要执行多个命令时,最好的方法是添加参数-f,然后只需键入文件路径,而不使用任何或“标记相对路径”,也可以:
psql -h %host% -p 5432 -U %user% -d %dbname% -f ..\..\folder\Data.txt
它也适用于.NETCore。迁移后,我需要它将基本数据添加到我的数据库中。如果您正在尝试shell脚本
psql postgresql://$username:$password@$host/$database如果在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"
在Shell脚本中,我使用@ketub,需要执行的herdoc查询中有批处理变量作为数据。我不太确定是否可以使用外部sql文件。@ketub:发布您想在问题中执行的查询示例。使用csv从“%filepath%/%csv_file%”复制testdata col1、col2、col3;这是我正在尝试的查询之一,类似的东西在shell脚本中工作,请忽略查询中的语法错误,如果存在下面提到的任何错误,请尝试在sql命令之前添加-c参数这是我正在尝试的当前查询,echo insert into testconfigtestid,scenarioid,testname值1,1,'asdf';|psql-h%DB_主机%-p5432-U%DB_用户%-d%DB_名称%,此时我得到的值是意外的。有什么建议吗?是的,请看我的第二个样本。每个右括号需要三个插入符号。。。名称1^^^^值值1^^^^如何在windows中将输出保存为csv文件??