gpt4 book ai didi

sql - 在 psql.exe 中插入失败(从 powershell 创建)

转载 作者:行者123 更新时间:2023-11-29 13:03:47 25 4
gpt4 key购买 nike

我正在从 Powershell 创建“动态”sql 语句并将其传递到 Windows 上的 PostGreSQL 服务器。

下面是代码

for ($i=1; $i -le 9; $i++)
{
$CurDate = (get-date -format "yyyy-MM-dd HH:mm:ss")
$BatchLogInsert = "Insert into `"TEMP`".`"batchLog`" (batchid, filename, status, createdate) values ('" + $NewBatchID + "','File"+$i+"','Init','"+$CurDate+"');"
write-host $BatchLogInsert

C:\PostgreSQL\9.3\bin\psql.exe -h $DBSERVER -U $DBUSER -d $CLIENTPREFIX -w -c $BatchLogInsert
}

写主机返回:

Insert into "TEMP"."batchLog" (batchid, filename, status, createdate) values ('3','File1','Init','2014-01-13 16:24:49');
Insert into "TEMP"."batchLog" (batchid, filename, status, createdate) values ('3','File2','Init','2014-01-13 16:24:49');
Insert into "TEMP"."batchLog" (batchid, filename, status, createdate) values ('3','File3','Init','2014-01-13 16:24:49');

等等。

当我在 PGAdmin 的“查询”窗口中执行这些插入时,它起作用了。但是,当我调用 psql.exe 时,它​​没有显示

ERROR: Relation "TEMP.batchLog" does not exist
LINE 1: Insert into TEMP.batchLog (batchid, filename, status, created...

我在这里做错了什么?


编辑:这是我的 powershell 窗口和 PgAdmin 窗口的屏幕截图... Screenshot


最佳答案

你的双引号被 Powershell 吃掉了,Postgres 看到了一个不带引号的表名,把它折叠成小写,但找不到这样的表。

正确的双引号转义似乎涉及反斜杠反引号:

$BatchLogInsert = "Insert into \`"TEMP\`".\`"batchLog\`" (...

完全避免在数据库对象名称中使用不同的大小写会更容易。

关于sql - 在 psql.exe 中插入失败(从 powershell 创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com