通过 postgresql 中的复制命令导入 csv 文件始终失败

Constant failure to import csv file via copy command in postgrsql

我在 windows 服务器上的 TEMP 目录中有一个文件

echo %TEMP%
C:\Users\BOB\AppData\Local\Temp

下面的命令将文件插入 table:

psql -d BOBDB01 -c "\COPY "BOBTB01" FROM 'C:\Users\BOB\AppData\Local\Temp\file.csv' with csv";

这会导致错误:

Password for user postgres: <pw_given>
ERROR:  relation "bobtb01" does not exist

虽然确实存在:

\d

 List of relations
 Schema |                              Name                               |   Type   | Owner
--------+-----------------------------------------------------------------+----------+--------
 public | BOBTB01                                                        | table    | BOB

任何人都可以帮我想出一些想法,为什么在 table 存在的情况下复制命令会失败?

谢谢。

"but it IS in double quotes...? no?"

没有。 windows shell 吃掉双引号,所以 PostgreSQL 永远看不到它们。您可以通过将它们倒退或加倍来将它们转移到 PostgreSQL。 (backwacking 它们在 bash 中也有效,加倍它们只是 Windows-shell 的事情。如果你使用的是 MS PowerHell 而不是 cmd shell,那么只有加倍它们才有效,backwacking 做一些不同的事情)

目前发生的是B之前未转义的"被cmdshell视为关闭行中第一个",那么你有裸词 BOBTB01,然后是 1 re-opens 引号之后的 ",它延伸到该行的其余部分。结果是内部 " 没有传递给 psql 程序。