3

我正在尝试使用“复制”命令将 csv 文件导入我的 postgres 表。包含逗号的值已用双引号括起来,但我似乎找不到使用“复制”命令将它们加载到 postgres 表中而没有任何错误的选项。

我正在使用的“复制”命令:

CREATE TABLE candidates (Sno int, name varchar, cases int, case_details varchar, .....);
copy candidates from 'something.csv' with NULL AS ' ' csv ;

有问题的 csv 行示例:

1, "some name", 2, "(1):IPC Sections -  147, 323, 352, 504, 506 , Other Details - Case no.283A/2000, A.C.J.M-5, Ghumangunj Ellahabad, UP, Dt.12.11.2000", .....

属性上方的case_details值中有逗号。那是我的问题。

4

3 回答 3

6

为我工作(PG 9.2,linux):

$ cat something.csv 
1, "some name", 2, "(1):IPC Sections -  147, 323, 352, 504, 506 , Other Details - Case no.283A/2000, A.C.J.M-5, Ghumangunj Ellahabad, UP, Dt.12.11.2000"

$ psql test
test=> CREATE TABLE candidates (Sno int, name varchar, cases int, case_details varchar);
CREATE TABLE
test=> \copy candidates from 'something.csv' with NULL AS ' ' csv ;
test=> select * from candidates ;
 sno |    name    | cases |                                                             case_details                                                             
-----+------------+-------+--------------------------------------------------------------------------------------------------------------------------------------
   1 |  some name |     2 |  (1):IPC Sections -  147, 323, 352, 504, 506 , Other Details - Case no.283A/2000, A.C.J.M-5, Ghumangunj Ellahabad, UP, Dt.12.11.2000
(1 row)
于 2013-03-19T18:35:56.033 回答
0

可能的解决方案 - 用任何其他字符替换引号中的逗号,加载数据,将逗号替换回来。

于 2013-03-19T18:32:43.747 回答
0

PhpPgAdmin 工具不够智能,无法处理逗号。Postgres 足够聪明来处理它们。它首先使用逗号将导入文件中的给定行中的数据拆分,然后自动在值周围加上引号。所以没有办法和客户一起做。至少对于 5.1 版是这样。他们可能在以后的版本中修复了它。

因此,如果您从 PhpPgAdmin 工具导入,请将逗号替换为“;” 或与您的数据分开的东西,然后在导入后运行 SQL 查询进行修复。

于 2016-02-04T19:23:17.007 回答