postgresql数据库 copy命令导入表不成功
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql数据库 copy命令导入表不成功相关的知识,希望对你有一定的参考价值。
出现:ERROR: invalid input syntax for integer: "1"
SQL 状态: 22P02
事件背景:COPY aa_log, line 1, column id: "1"
表格式为:
create table aa_log(
id int8,
callid int8,
calledid int8,
)
命令为:copy aa_log from '/root/data/dsestgroup_back.csv' with delimiter ',';
csv文件类容为:
1,2,3
4,5,6
因为一直尝试不成功,所以用一个简单的表测试,结果还是不成功。比较急,正确回答追加50分。
开始觉得这个导入是个比较简单的事情,经过测试你的这个copy,发现还不简单。
经过尝试,发现在导入时,需要在cvs文件中加入导入字段的定义,即第一行需要有字段名,然后在copy命令中要指定选项header为true. 另外,为了保证成功,还加入format指定为csv, 文件格式指定为utf8。
我的导入命令:
copy aa_log (id, callid, calledid)from 'e:\\t01.csv'
with (format csv, header true, quote '"', DELIMITER ',', encoding 'UTF8');
导入文件内容:
id,callid,calledid
1,2,3
4,5,6
导入结果如下图,
参考技术A 参考:工具:PostgreSQL客户端pgAdmin。
步骤:
1.将excel表格字段,按照postgresql 数据库中表的字段顺序来整理数据,并保存为csv文件。
2.用记事本打开csv文件,另存为UTF-8格式。
3.使用PgAdmin客户端链接postgresql数据库,执行如下脚本,导入csv文件到PostgreSQL数据表:
copy testdata from 'd:/test/testdata.csv' delimiter as',' csv quote as '"'
注:testdata 是postgreSQL数据库表的名称。
来源:http://blog.csdn.net/namelb/article/details/7909910追问
复制粘贴就免了
使用PostgreSql的Copy功能来导入增量数据的步骤
一、参照原数据表创建临时表
CREATE TEMP TABLE temp_testbulkcopy ON COMMIT DROP as (select * from testbulkcopy limit 0);
1、temp_testbulkcopy 为临时表的表名
2、testbulkcopy 为实际数据表的表名
3、ON COMMIT DROP 表示用完这次就自动删掉
二、把数据通过Copy的方式导入到临时表里
COPY temp_testbulkcopy FROM ‘C:data estOutPut.csv‘ WITH csv header DELIMITER ‘|‘ encoding ‘UTF8‘;
三、根据主键删除实际表与临时重复的数据(有重复证明就有更新)
delete FROM testbulkcopy where "ID" in (select "ID" from temp_testbulkcopy);
四、把临时表的数据插入到实际表中
INSERT INTO testbulkcopy select * from temp_testbulkcopy;
附录:
1、用来演示的表的建表语句:
CREATE TABLE public.testbulkcopy ( "ID" character varying(38) COLLATE pg_catalog."default" NOT NULL, "NAME" character varying(255) COLLATE pg_catalog."default", "CITY" character varying(255) COLLATE pg_catalog."default" )
2、测试数据
ID|NAME|CITY bedf812f-2311-4717-a749-8b1272fc3c86|张三|北京 bedf812f-2311-4717-a749-8b1272fc3c87|张三|北京 bedf812f-2311-4717-a749-8b1272fc3c88|张三|北京 bedf812f-2311-4717-a749-8b1272fc3c89|张三|北京 bedf812f-2311-4717-a749-8b1272fc3c81|张三|北京 bedf812f-2311-4717-a749-8b1272fc3c82|张三|北京 bedf812f-2311-4717-a749-8b1272fc3c83|张三|北京
以上是关于postgresql数据库 copy命令导入表不成功的主要内容,如果未能解决你的问题,请参考以下文章
求postgreSQL 的数据库的表数据,导入导出的sql语句,谢谢!
PostgresSQL使用Copy命令能大大提高数据导入速度