Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql PG复制错误:';整数'的输入语法无效;导入不带任何整数的带引号的CSV文件时_Postgresql_Csv - Fatal编程技术网

Postgresql PG复制错误:';整数'的输入语法无效;导入不带任何整数的带引号的CSV文件时

Postgresql PG复制错误:';整数'的输入语法无效;导入不带任何整数的带引号的CSV文件时,postgresql,csv,Postgresql,Csv,在Postgres 9.5.1中的一个简单示例数据库中尝试通过SQL使用命令时 我得到这个错误: 错误:整数“Sally”的输入语法无效 上下文:复制客户,第2行,列id:“Sally” **********错误********** 错误:整数“Sally”的输入语法无效 SQL状态:22P02 上下文:复制客户,第2行,列id:“Sally” …在CSV(逗号分隔值)中导入此数据时: “名字”、“姓氏”、“电话”、“电子邮件” “莎莉”、“琼斯”、“425.555.1324”、“s。jone

在Postgres 9.5.1中的一个简单示例数据库中尝试通过SQL使用命令时

我得到这个错误:

错误:整数“Sally”的输入语法无效
上下文:复制客户,第2行,列id:“Sally”
**********错误**********
错误:整数“Sally”的输入语法无效
SQL状态:22P02
上下文:复制客户,第2行,列id:“Sally”
…在CSV(逗号分隔值)中导入此数据时:

“名字”、“姓氏”、“电话”、“电子邮件”
“莎莉”、“琼斯”、“425.555.1324”、“s。jones@acme.com"
“贾罗德”,“巴克利”,“206.555.3454”,“j。barkley@example.com"
“温迪”,“梅尔文”,“415.555.2343”wendy@wendyandlisa.com"
“丽莎”,“科尔曼”,“425.555.7282”lisa@wendyandlisa.com"
“杰西”,“约翰逊”,“507.555.7865”,“j。j@guitar.com"
“Jean-Luc”,“Martin”,“212.555.2244”,“Jean-Luc。martin@example.com"
…通过在pgAdmin中执行的以下SQL导入:

复制客户_
来自“/home/parallels/Downloads/customer_uu2;.csv”
CSV
标题
;
…放入此表:

--表:public.customer_
--下拉表public.customer\ux;
创建表public.customer_
(
id_uuinteger非空默认nextval('customer_uid_useq'::regclass),
第一个\u名称\u文本不为空,
姓氏文本不为空,
电话\文本不为空默认值“”::文本,
电子邮件\文本不为空默认值“”::文本,
约束pkey_客户_主键(id_)
)
与(
OID=错误
);
更改表public.customer_
博士后的所有者;
对public.customer表的评论_
是“代表宠物来我们诊所看病的人”;
因此,似乎正在成功处理包含列名称的第一行。故障点位于CSV第一个数据行中的第一个数据值处。我导入的数据都不是整数类型,因此我被错误消息弄糊涂了。唯一的整数是
id.
主键,自动递增
SERIAL

我确实读了上的问题页。但是这个问题确实涉及整数值,并且在被解释为空的带引号的空字符串中缺少整数值。在我的例子中,数据中没有整数值;唯一的整数是主键
SERIAL
列,其中包含
默认值
生成的值(不在导入的数据中)


我也发现了这个问题。但这似乎无关紧要。

尝试指定列。如果没有主键:

COPY customer_ (first_name_ text, last_name_ text, phone_ text, email_ text)
FROM '/home/parallels/Downloads/customer_.csv'
CSV 
HEADER
;
在没有列列表的情况下,它正在查找
id.
的值

导入数据文件的第一行列名不用于映射到表列。页眉标志只告诉Postgres跳过第一行:

标题

指定…在输入时,忽略第一行


标题
的整个要点不就是不指定吗?无论如何,我试过你的建议(但省略了“文本”的措辞)。得到了一个不同的错误,仍然是神秘的,但它似乎已经处理了以前的违规行,这是一个不同的神秘。我从“/home/parallels/Downloads/customer_uu.csv”csv头运行
COPY customer_u(名字、姓氏、电话、电子邮件)
和Get error
错误:列“last_name_”缺少数据上下文:复制客户,第8行:“*********错误*********错误:列“last_name_”缺少数据SQL状态:22P04上下文:复制客户,第8行:”
我发现上一个错误是由于CSV数据文件末尾的一个空行造成的。Postgres对它的CSV很挑剔。因此,这个答案是一个成功的解决办法。但是,如果仍然要求我拼写列名,我不理解
复制
命令中的
标题
的意义。仔细阅读会发现,在读取文件时,列名会被忽略。
标题
标志只告诉Postgres跳过第一行(并在导出时告诉Postgres生成第一行)。因此,指定此答案中所示的列名是一项功能,而不是一个bug。谢谢!!我没有指定列名,并且得到了与OP相同的错误。在指定列名后,这对我有效。是的,当使用“csv标头”时,标头不会从csv文件读取并成功导入postgres@amardobliyal正如harmonica141所建议的,你应该在回答中加入一些解释。堆栈溢出不仅仅是一个代码段库。
COPY table_name FROM 'C:\path\file.csv' DELIMITERS ',' CSV header;