Я создаю «динамические» SQL-заявления из Powershell и передаю их на сервер PostGreSQL в Windows.Вставка сбой в psql.exe (создана из powershell)
Ниже приведен код
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...
Что я здесь делаю неправильно?
EDIT: Вот скриншот моего окна Powershell и окна PgAdmin ...
Либо вы не выполняете одни и те же запросы в 'psql' и pgAdmin, или (более вероятно), что вы не подключаетесь к одной базе данных. –
'' TEMP.batchLog '' отличается от '' TEMP "." BatchLog "' (возможно, ваш pgadmin submit не включал никаких кавычек вообще) – wildplasser
@ MilenA.Radev Я знаю, что это кажется неправильным, но, не знаю, что будет быть хорошим способом показать, что я пытаюсь подключиться к правильной БД. Его первый раз с PostGreSql, и у меня возникают проблемы с тем, что, похоже, правильно работает с простой вставкой. – DataRiver