我将数据迁移到Postgresql。我可以将数据生成为CSV或制表符分隔的文件,并且我尝试使用pgAdmin导入这些文件。
示例CSV文件看起来像完全,如下所示:
86,72,1,test
72,64,1,another test
我导入的表格如下所示:
CREATE TABLE common.category
(
id integer NOT NULL,
parent integer,
user_id integer,
name character varying(128),
CONSTRAINT category_pkey PRIMARY KEY (id),
CONSTRAINT category_parent_fkey FOREIGN KEY (parent)
REFERENCES common.category (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
但是,在导入此示例时,pgAdmin会在第一行抱怨Invalid Input Syntax for Integer: "86"
。
我在这里缺少什么?我尝试使用制表符分隔文件执行相同的导入,我尝试过转换为Windows和Unix EOL。
答案 0 :(得分:2)
您的示例具有导入数据顺序的依赖项。有一个外键的父母'引用' id'。在表格中已经有了ID 64,改变了它导入的样本行的顺序:
COPY common.category
FROM 'd:\temp\importme.txt'
WITH CSV
答案 1 :(得分:0)
我遇到了同样的问题。经过2个小时的谷歌,this确实解决了它。我刚刚重新添加了csv文件的第一行,现在一切顺利。
答案 2 :(得分:0)
在Windows资源管理器中创建一个新的文本文件并将文件扩展名更改为.csv之后,我遇到了相同的错误。
我将列从Excel中的现有CSV文件复制到了新的Excel文件中。在阅读@Litty关于它不是用制表符分隔的评论之后,我想知道这是否是我的问题。
果然,在Excel中打开文件会隐藏制表符定界。当我在Notepad ++中打开它时,很明显。在使用pgAdmin作为默认CSV文件导入文件之前,我必须先导出->更改文件类型-> CSV(以逗号分隔)。