• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

【原创】MySQL和PostgreSQL 导入数据对比

mysql 搞代码 4年前 (2022-01-09) 55次浏览 已收录 0个评论

在虚拟机上测评了下MySQL和PostgreSQL的各种LOADFILE方式以及时间。因为是虚拟机上的测评,所以时间只做参考,不要太较真,看看就好了。MySQL工具:1.自带mysqlim

在虚拟机上测评了下MySQL 和 PostgreSQL 的各种LOAD FILE方式以及时间。 因为是虚拟机上的测评,所以时间只做参考,,不要太较真, 看看就好了。

MySQL 工具:

1. 自带mysqlimport工具。

2. 命令行 load data infile …

3. 利用mysql-connector-python Driver来写的脚本。

PostgreSQL 工具:

1. pgloader 第三方工具。

2. 命令行 copy … from …

3. 利用psycopg2写的python 脚本。

测试表结构:

mysql> desc t1;+———-+———–+——+—–+——————-+——-+| Field | Type| Null | Key | Default| Extra |+———-+———–+——+—–+——————-+——-+| id| int(11) | NO | PRI | NULL||| rank| int(11) | NO || NULL||| log_time | timestamp | YES || CURRENT_TIMESTAMP ||+———-+———–+——+—–+——————-+——-+3 rows in set (0.00 sec)mysql> select count(*) from t1;+———-+| count(*) |+———-+| 1000000 |+———-+1 row in set (6.80 sec)

测试CSV文件:

t1.csv

MySQL 自身的loader: (时间24妙)

mysql> load data infile ‘/tmp/t1.csv’ into table t1 fields terminated by ‘,’ enclosed by ‘”‘ lines terminated by ‘\r\n’;Query OK, 1000000 rows affected (24.21 sec)Records: 1000000 Deleted: 0 Skipped: 0 Warnings: 0

MySQL python 脚本:(时间23秒)

>>>

Running 23.289 Seconds

MySQL 自带mysqlimport:(时间23秒)

[root@mysql56-master ~]# time mysqlimport t_girl ‘/tmp/t1.csv’ –fields-terminated-by=’,’ –fields-enclosed-by='”‘ –lines-terminated-by=’\r\n’ –use-threads=2 -uroot -proott_girl.t1: Records: 1000000 Deleted: 0 Skipped: 0 Warnings: 0real 0m23.664suser 0m0.016ssys0m0.037s

PostgreSQL 自身COPY:(时间7秒)

t_girl=# copy t1 from ‘/tmp/t1.csv’ with delimiter ‘,’;COPY 1000000Time: 7700.332 ms

Psycopg2 驱动copy_to方法:(时间6秒)

[root@postgresql-instance scripts]# python load_data.pyRunning 5.969 Seconds.

Pgloader 导入CSV:(时间33秒)

[root@postgresql-instance ytt]# pgloader commands.loadtable nameread importederrorstimeytt.t1 1000000 1000000033.514s—————————— ——— ——— ——— ——————————————– ——— ——— ——— ————–Total import time 1000000 1000000033.514sPgloader 直接从MySQL 拉数据:(时间51秒)[root@postgresql-instance ytt]# pgloader commands.mysqltable nameread importederrorstimefetch meta data2200.138s—————————— ——— —本文来源gaodai#ma#com搞*!代#%^码网5——- ——— ————–t1 1000000 1000000051.136s—————————— ——— ——— ——— ——————————————– ——— ——— ——— ——————————————– ——— ——— ——— ————–Total import time 1000000 1000000051.274s

附上commands.load和commands.mysql

commands.load:LOAD CSVFROM ‘/tmp/ytt.csv’ WITH ENCODING UTF-8(id, rank, log_time)INTO postgresql://t_girl:[email protected]:5432/t_girl?ytt.t1 WITH skip header = 0,fields optionally enclosed by ‘”‘,fields escaped by backslash-quote,fields terminated by ‘,’SET work_mem to ’32 MB’, maintenance_work_mem to ’64 MB’;commands.mysql:LOAD DATABASEFROM mysql://python_user:[email protected]:3306/t_girl?t1INTO postgresql://t_girl:[email protected]:5432/t_girl?ytt.t1 with data only SET maintenance_work_mem to ’64MB’,work_mem to ‘3MB’,search_path to ‘ytt’;

附pgloader 手册:

本文出自 “上帝,咱们不见不散!” 博客,请务必保留此出处


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【原创】MySQL和PostgreSQL 导入数据对比

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址