使用COPY命令将数据插入PostgreSQL表

时间:2018-12-05 16:41:26

标签: postgresql postgresql-copy

我是整个数据库的新手(因此,我为自己的愚蠢问题或在解释自己的情况时可能犯的任何错误表示歉意),并且遇到了一些问题。

我正在尝试将一些数据插入PostgreSQL的表中,但不会让我显示此错误消息:

ERROR:  syntax error at or near "1"
LINE 3: 1 AR ALTEK RETAIL 0
        ^
SQL state: 42601
Character: 76

我正在使用的代码就是这个,我是通过导出数据库获得的,我没有编写任何代码:

COPY car_categorias (id, categoria, nombre, idcuentadeudores) FROM stdin;
1   AR  ALTEK RETAIL    0
2   AC  ALTEK CONTRACT  0
3   AB  ALTEK BLUE  0
4   T   TOIN    0
\.

我还必须对其他表执行此操作,因为这些表总计超过一百万行数据,因此将其转换为SQL代码不是一种选择。

1 个答案:

答案 0 :(得分:0)

您无法在pgAdmin中执行此操作,必须使用psql

但是,在psql中键入制表键是一个问题,因为readline库将被解释为“制表符扩展”的请求。

您可以将值复制并粘贴到psql中,也可以以psql -n开头以禁用读取行支持,从而禁用制表符扩展。

另一种方法是使用CSV格式:

COPY car_categorias (id, categoria, nombre, idcuentadeudores)
   FROM STDIN (FORMAT 'csv');

然后您输入以下值:

1,AR,ALTEK RETAIL,0
2,AC,ALTEK CONTRACT,0

这可能使事情变得简单。

如果文件中有制表符分隔的数据,则可以这样调用psql

psql -c "COPY car_categorias (id, categoria, nombre, idcuentadeudores) FROM STDIN" <datafile