问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

postgresql数据库 copy命令导入表不成功

发布网友 发布时间:2022-05-01 05:47

我来回答

3个回答

懂视网 时间:2022-05-01 10:09

 

示例1.将整张表拷贝至标准输出

test=# copy tbl_test1 to stdout;
1 HA 12
2 ha 543

 

示例2.将表的部分字段拷贝至标准输出,并输出字段名称,字段间使用‘,‘分隔

test=# copy tbl_test1(a,b) to stdout delimiter ‘,‘ csv header;
a,b
1,HA
2,ha

 

示例3.将查询结果拷贝至标准输出

test=# copy (select a,b from tbl_test1 except select e,f from tbl_test2 ) to stdout delimiter ‘,‘ quote ‘"‘ csv header;
a,b
2,ha

 

将标准输入拷贝至表中需要注意几点

1.字段间分隔符默认使用【Tab】键

2.换行使用回车键

3.结束使用反斜线+英文据点(.)

4.最好指定字段顺序,要不然可能会错位赋值

 

示例4.将标准输入拷贝至表中

test=# copy tbl_test1(a,b,c) from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1 公举 公主
>> 2 万岁 万万岁
>> .
COPY 2
test=# select * from tbl_test1 ;
 a | b | c 
---+------+--------
 1 | HA | 12
 2 | ha | 543
 1 | 公举 | 公主
 2 | 万岁 | 万万岁
(4 rows)

 

示例5.从标准输入拷贝至表中,并将标准输入第一行作为字段名(和表中不符也没关系,copy会自动忽略第一行),字段分隔符为‘,‘

test=# copy tbl_test1(a,b,c) from stdin delimiter ‘,‘ csv header;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> a,b,c
>> 3,你好,hello
>> 4,超人,super
>> .
COPY 2
test=# select * from tbl_test1 ;
 a | b | c 
---+------+--------
 1 | HA | 12
 2 | ha | 543
 1 | 公举 | 公主
 2 | 万岁 | 万万岁
 3 | 你好 | hello
 4 | 超人 | super
(6 rows)

 

以上是表与标准输出和标准输入间的相互拷贝,表与文件的拷贝和以上完全相同,只是将标准输出和标准输入换成文件。需要注意的是:

1.数据库用户必须有文件所在的路径的写权限。

2.如果表存在中文字符,导出至csv文件时需要设置编码为GBK,否则使用excel打开是中文显示乱码。

3.将文件导入表中时仍要考虑编码问题

 

示例6.将表拷贝至csv文件中

test=# copy tbl_test1 to ‘/tmp/tbl_test1.csv‘ delimiter ‘,‘ csv header;
COPY 6

使用excel打开文件,中文显示为乱码

技术分享

 

示例7. 将表以GBK编码拷贝至csv文件中

 

test=# copy tbl_test1 to ‘/tmp/tbl_test1.csv‘ delimiter ‘,‘ csv header encoding ‘GBK‘;
COPY 6

 

使用excel打开,中文显示正常

技术分享

 

示例8.将刚才导出的文件再次拷贝至表中,使用默认编码UTF8 

test=# copy tbl_test1(a,b,c) from ‘/tmp/tbl_test1.csv‘ delimiter ‘,‘ csv header;
ERROR: invalid byte sequence for encoding "UTF8": 0xb9
CONTEXT: COPY tbl_test1, line 4

 

示例9.将刚才导出的文件再次拷贝至表中,使用GBK编码

test=# copy tbl_test1(a,b,c) from ‘/tmp/tbl_test1.csv‘ delimiter ‘,‘ csv header encoding ‘GBK‘;
COPY 6

 

postgresql----COPY之表与文件之间的拷贝

标签:

热心网友 时间:2022-05-01 07:17

开始觉得这个导入是个比较简单的事情,经过测试你的这个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

导入结果如下图,

热心网友 时间:2022-05-01 08:35

参考:
工具: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追问复制粘贴就免了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 西门子冰箱冷藏室1-5旋钮的边上有个开关,请问它的具体作用是什么... 驾驶自动挡汽车的时候,想省油应该怎么开? 手动挡车怎么开省油 车子怎么开省油? 汽车行驶中,怎样开车才比较省油? 手动挡车怎么开最省油?有什么小技巧? 车怎样开最省油省车 私企帮员工交社保怎么交 上海无雇工的私企老板如何缴社保? 私企如何买养老保险 国企职工下岗后又到私营企业上岗工作,养老保险怎样接续缴纳_百度问一问 上海私企社保是怎么交的 私企职工社保缴费比例 关于滴滴快车好处坏处的英语作文 私营企业如何给职工缴纳养老保险 详细 注册滴滴打车司机车辆的报废期会变成8年?还有什么另外的弊端吗? 私企单位怎么缴养老保险 iphone5s的慢动作视频怎样剪切? 孩子嗓子有点红有什么办法可以不吃药就会好孩子嗓子有 法律规定私营企业怎么交社保 手机拿回来需要激活吗? 怎样委婉的把孩子的手机要过来? 怎样委婉的把孩子的手机要过来? 手机怎样拿回来 手机怎样拿回来 为什么我一我哥就把手机拿过去是不是闲我脚脏? 与父母发生冲突后,怎么把手机从父母那里拿过来? 与父母发生冲突后,怎么把手机从父母那里拿过来? 韩语手机拿过来怎么说 韩语手机拿过来怎么说 从国外买的手机拿回来能用吗 从国外买的手机拿回来能用吗 手机做号工作室违法手机能拿过来吗 手机做号工作室违法手机能拿过来吗 朋友欠钱不还我去他家把手机拿过来,请问算犯罪吗 朋友欠钱不还我去他家把手机拿过来,请问算犯罪吗 我用我男朋友手机在网上买了点东西,他把手机拿过来看了又看是什么意思? 我用我男朋友手机在网上买了点东西,他把手机拿过来看了又看是什么意思? 把爸爸手机拿过来英语 把爸爸手机拿过来英语