通过 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
程序。
我在 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
程序。