使用psql的\ copy命令时出现“没有此类文件或目录”错误消息

时间:2012-10-02 19:55:09

标签: postgresql

我为此psql的\ copy命令提供了“No such file or directory”的错误消息:

\copy household from '/home/kihong/hh.csv' with csv header;

你有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果我是你,我会将文件移动到不同的文件夹(这对我有用)。我尝试从桌面上传我的CSV文件并收到您收到的错误消息。另外,正如Craig Ringer建议使用副本而不是\ copy。

以下是有关如何将电子表格(Excel或OpenOffice Calc)中的数据加载到postgreSQL中的分步说明:

将电子表格页面另存为CSV文件。首选方法是在OpenOffice Calc上打开电子表格并进行保存。在“导出到文本文件”窗口中,选择字符集为Unicode(UTF8),字段分隔符:“,”和文本分隔符“”“。将显示消息,说明仅保存活动表。注意:此文件必须保存在文件夹中,但不能保存在桌面上,并且必须以UTF8格式保存(dafault的postgreSQL是UTF8编码的升级版)。如果保存在桌面上,postgreSQL将提供“拒绝访问”消息,并且不会上传。

在PostgreSQL中,创建一个与电子表格具有相同列数的空表。

注意:在每列上,列名必须相同,数据类型必须相同。另外,请记住字符随着足够的字段而变化的数据长度。

然后在postgreSQL上,在SQL窗口中输入代码:

从E'C复制“ABC”。“def”:\\ tmp \\ blabla.csv'delimiters','CSV HEADER;

注意:此处C:\\ tmp是保存CSV文件“blabla”的文件夹。 “ABC”。“def”是在postgreSQL上创建的表,其中“ABC”是模式,“def”是表。然后按顶部的绿色按钮执行“执行查询”。当CSV表在每列的开头标题时,需要“CSV HEADER”。

如果everythig没问题,则不会显示任何错误消息,CSV文件中的表数据将被加载到postgreSQL表中。但如果出现错误消息,请执行以下操作:

如果错误消息指出特定列的数据太长,则增加列大小。这主要发生在字符和字符变化列上。然后再次运行“执行查询”命令。

如果错误消息表明数据类型与特定列不匹配,则更改postgreSQL table-column上的数据类型以匹配CSV表中的数据类型。