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$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 列数据,但您的复制语句中只有 13 列。具体来说,您在复制声明中缺少 ID 列。如果数据的顺序与它们在表中声明的顺序相同,则无需将列名放在 copy table from 语句中。

COPY users FROM 'D:/test/db_backup/data_csv.csv'  CSV HEADER delimiter ';' null '\N';

在您的情况下会很好地工作——请注意您也不需要 WITH。

编辑。您需要显式设置空值,如 null '\N'。如果您使用“”,您会得到一个错误,例如:“CSV 引号字符不得出现在 NULL 规范中”。另外,在CSV模式下只能指定HEADER,所以如果要同时使用HEADER和CSV,则不能使用""作为分隔符,必须使用显式的空'\N'。

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

关于postgresql - pgadmin 导入问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23941679/

相关文章:

r - 将原始字节作为 R 中的原始字节导入

sql - 如何撤销PostgreSQL中特定字段的权限

node.js - 使用 Node.js 连接到 Heroku 上的 postgres

postgresql - 在 mac 上打开 pgAdmin 4 时出错

postgresql jdbc、pgobject可用类型、数组类型

postgresql - 如何知道 SP 的修改日期?

postgresql - pgAdmin 显示类型 [] 但不显示类型

windows - 用户 "postgres"的抖动密码验证失败

database - 使用 pgadmin 连接到 heroku 数据库

postgresql-9.1 - 尝试恢复数据库时 PgAdmin III 没有响应