免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 10123 | 回复: 7
打印 上一主题 下一主题

怎样导入大量数据到指定的表? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-26 10:07 |只看该作者 |倒序浏览
我有个号码文本文件,有20万左右数据。用POSTGRESQL客户端导入太慢了,想问下用什么办法,在数据库本地用命令读取文本文件导入到数据库指定表里?

论坛徽章:
0
2 [报告]
发表于 2007-01-26 13:31 |只看该作者
\i abc.txt

论坛徽章:
0
3 [报告]
发表于 2007-01-26 16:35 |只看该作者
\i 是代表什么啊?
还有我的文本文件应该放在那个目录

论坛徽章:
0
4 [报告]
发表于 2007-01-26 17:19 |只看该作者
copy

论坛徽章:
0
5 [报告]
发表于 2007-01-26 20:32 |只看该作者
原帖由 carmen_cai 于 2007-1-26 16:35 发表
\i 是代表什么啊?
还有我的文本文件应该放在那个目录


\i 是导入sql语句,需要有insert 配合

文件可以随便放,用绝对路径

[ 本帖最后由 joint 于 2007-1-26 20:33 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-01-27 17:14 |只看该作者

回复 1楼 carmen_cai 的帖子

你的这个号码文本文件应该只包含数据,所以不能用\i这个命令。

建议你把这个文本文件拷贝到postgresql服务器端的电脑上。在这个电脑中运行psql(postgresql自己的客户端程序),用copy来导入数据。用\h copy可以查看帮助。copy这个命令为导入大量数据优化过,比\i更合适。

论坛徽章:
0
7 [报告]
发表于 2007-01-27 18:52 |只看该作者
原帖由 xuming 于 2007-1-27 17:14 发表
你的这个号码文本文件应该只包含数据,所以不能用\i这个命令。

建议你把这个文本文件拷贝到postgresql服务器端的电脑上。在这个电脑中运行psql(postgresql自己的客户端程序),用copy来导入数据。用\h copy可 ...


非常对

论坛徽章:
0
8 [报告]
发表于 2007-02-02 18:50 |只看该作者
\copy tablename from filesname with delimiter ','
比如我有一个文件mytest.csv(最好是CSV格式),文件用openoffice处理一下,可以选择保存的分隔符和字符编码,如果数据库是utf8的,就需要将字符编码设置成utf8,gb2312一样。要导入mytest这个数据表,(注意字段和文件中的列数要一一对应,字段长度要够)。分隔符是/,/(z中间的逗号),我可以这样:
\copy mytest from '/home/cg/mytest.csv' with delimiter ','
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP