Postgresql pgadmin导入问题?

Postgresql pgadmin导入问题?,postgresql,pgadmin,Postgresql,Pgadmin,我正在尝试导入以下从PgAdmin导入的csv文件 CSV文件: "id";"email";"password";"permissions";"activated";"activation_code";"activated_at";"last_login";"persist_code";"reset_password_code";"first_name";"last_name";"created_at";"updated_at" "11";"test.teset@gmail.com";"$2y$

我正在尝试导入以下从PgAdmin导入的csv文件

CSV文件:

"id";"email";"password";"permissions";"activated";"activation_code";"activated_at";"last_login";"persist_code";"reset_password_code";"first_name";"last_name";"created_at";"updated_at"
"11";"test.teset@gmail.com";"$2y$10$gNfDFVCgqhQzCgKoiLuKfeskyCUPzK1akJvk6PdXt1DmMJooCuYpi";"";"t";"XY56HNcFHeAcAwzUhleYhvVbxxmOaMr57ifYEhxiUd";"";"2014-05-27 08:47:33";"$2y$10$g0LnAStmA/kEWuhNDfWleOjQeyo9maGvvIlfiJms/KpRiPAdfBWHm";"";"";"";"2014-05-27 07:51:07";"2014-05-27 08:47:33"
"5";"test@gmail.com";"$2y$10$dXODoI520pddcmiSXcS/OuiH.4K/87LEXeQRzvUl2k/Uth2HumpNy";"";"t";"4k8s1TbgrPfAMcNozVEP19MOQkCApQ0LA8bhGkF55A";"";"2014-05-21 21:18:06";"$2y$10$CefSnbQIzAJBo5PfbMdzKuhzpW17fHqh/frWabmljzJvv0A5Vkt1O";"";"";"";"2014-05-21 21:17:45";"2014-05-22 19:12:01"
这是我用来导入CSV文件的命令

 DROP TABLE users;


 CREATE TABLE users
(
  id serial NOT NULL,
  email character varying(255) NOT NULL,
  password character varying(255) NOT NULL,
  permissions text,
  activated boolean NOT NULL DEFAULT true,
  activation_code character varying(255),
  activated_at timestamp without time zone,
  last_login timestamp without time zone,
  persist_code character varying(255),
  reset_password_code character varying(255),
  first_name character varying(255),
  last_name character varying(255),
  created_at timestamp without time zone,
  updated_at timestamp without time zone
);


COPY users (email,password,permissions,activated,activation_code,activated_at,last_login,persist_code,reset_password_code,first_name,last_name,created_at,updated_at)
FROM 'D:/test/db_backup/data_csv.csv'  WITH CSV HEADER delimiter ';'
        ;
但我得到以下错误,不知道为什么

**ERROR: extra data after last expected column SQL state: 22P04**

请告诉我这里的问题是什么?

因为您有14列数据,但在copy语句中只有13列。具体来说,您的副本声明中缺少ID列。如果数据的顺序与在表中声明的顺序相同,则无需将列名放在copy table from语句中

COPY users FROM 'D:/test/db_backup/data_csv.csv'  CSV HEADER delimiter ';' null '\N';
在您的情况下会很好地工作——注意,您也不需要使用

编辑。您需要显式设置null值,如null'\N'。如果使用“”,可能会出现错误,例如:“CSV引号字符不得出现在空规范中”。此外,您只能在CSV模式下指定标头,因此如果要使用标头和CSV,则不能使用“”作为分隔符,并且必须使用显式null“\N”


在将所有“”替换为\N.

后,我已更新了原始答案以包含此内容,并导入了您的示例数据,因为您的copy语句中有14列数据,但只有13列。具体来说,您的副本声明中缺少ID列。如果数据的顺序与在表中声明的顺序相同,则无需将列名放在copy table from语句中

COPY users FROM 'D:/test/db_backup/data_csv.csv'  CSV HEADER delimiter ';' null '\N';
在您的情况下会很好地工作——注意,您也不需要使用

编辑。您需要显式设置null值,如null'\N'。如果使用“”,可能会出现错误,例如:“CSV引号字符不得出现在空规范中”。此外,您只能在CSV模式下指定标头,因此如果要使用标头和CSV,则不能使用“”作为分隔符,并且必须使用显式null“\N”


在将所有“”替换为\N.

后,我已更新了原始答案以包含此内容,并导入了您的示例数据,因为您的copy语句中有14列数据,但只有13列。具体来说,您的副本声明中缺少ID列。如果数据的顺序与在表中声明的顺序相同,则无需将列名放在copy table from语句中

COPY users FROM 'D:/test/db_backup/data_csv.csv'  CSV HEADER delimiter ';' null '\N';
在您的情况下会很好地工作——注意,您也不需要使用

编辑。您需要显式设置null值,如null'\N'。如果使用“”,可能会出现错误,例如:“CSV引号字符不得出现在空规范中”。此外,您只能在CSV模式下指定标头,因此如果要使用标头和CSV,则不能使用“”作为分隔符,并且必须使用显式null“\N”


在将所有“”替换为\N.

后,我已更新了原始答案以包含此内容,并导入了您的示例数据,因为您的copy语句中有14列数据,但只有13列。具体来说,您的副本声明中缺少ID列。如果数据的顺序与在表中声明的顺序相同,则无需将列名放在copy table from语句中

COPY users FROM 'D:/test/db_backup/data_csv.csv'  CSV HEADER delimiter ';' null '\N';
在您的情况下会很好地工作——注意,您也不需要使用

编辑。您需要显式设置null值,如null'\N'。如果使用“”,可能会出现错误,例如:“CSV引号字符不得出现在空规范中”。此外,您只能在CSV模式下指定标头,因此如果要使用标头和CSV,则不能使用“”作为分隔符,并且必须使用显式null“\N”



在将所有“”替换为\N之后,我已更新了原始答案以包含此内容并导入了示例数据。

我在运行复制命令后收到此错误错误:类型时间戳的输入语法无效:“SQL状态:22007上下文:复制用户,第2行,列激活位置:”“这是因为您的激活位置数据为”这不一定与null相同。您需要将“”替换为\N。我以前遇到过这个问题--手册上说“”是CSV格式中null的默认值,但我发现\N效果更好。替换后出现了类似的错误:类型时间戳的输入语法无效:“\N”SQL状态:22007上下文:复制用户,第2行,列激活:“\N”尝试使用null的显式值,例如从'D:/test/db_backup/data_csv.csv'csv HEADER delimiter';'复制用户空'\N';这适用于我处理您的数据。仅使用该列创建一个新的csv,并从中指定复制用户(colname)。。。但这是一个不同的问题:-)我解决了您最初的问题了吗?在运行复制命令错误:类型时间戳的输入语法无效:“SQL state:22007 Context:copy users,第2行,column activated_at:”“这是因为您的activated_at数据为“”,不一定与null相同。您需要将“”替换为\N。我以前遇到过这个问题--手册上说“”是CSV格式中null的默认值,但我发现\N效果更好。替换后出现了类似的错误:类型时间戳的输入语法无效:“\N”SQL状态:22007上下文:复制用户,第2行,列激活:“\N”尝试使用null的显式值,例如从'D:/test/db_backup/data_csv.csv'csv HEADER delimiter';'复制用户空'\N';这适用于我处理您的数据。仅使用该列创建一个新的csv,并从中指定复制用户(colname)。。。但这是一个不同的问题:-)我解决了您最初的问题了吗?在运行复制命令错误:类型时间戳的输入语法无效:“SQL state:22007 Context:copy users,第2行,column activated_at:”“这是因为您的activated_at数据为“”,不一定与null相同。您需要将“”替换为\N。我以前遇到过这个问题--手册上说“”是CSV格式中null的默认值,但我发现\N效果更好。替换后出现了类似的错误:类型timestamp的输入语法无效:“\N”SQL state