在虚拟机上測评了下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 -proot
t_girl.t1: Records: 1000000 Deleted: 0 Skipped: 0 Warnings: 0 real 0m23.664s
user 0m0.016s
sys 0m0.037s

PostgreSQL 自身COPY:(时间7秒)

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

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

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

Pgloader 导入CSV:(时间33秒)

[root@postgresql-instance ytt]# pgloader commands.load
table name read imported errors time ytt.t1 1000000 1000000 0 33.514s
------------------------------ --------- --------- --------- --------------
------------------------------ --------- --------- --------- --------------
Total import time 1000000 1000000 0 33.514s

Pgloader 直接从MySQL 拉数据:(时间51秒)

[root@postgresql-instance ytt]# pgloader commands.mysql
table name read imported errors time fetch meta data 2 2 0 0.138s
------------------------------ --------- --------- --------- --------------
t1 1000000 1000000 0 51.136s
------------------------------ --------- --------- --------- --------------
------------------------------ --------- --------- --------- --------------
------------------------------ --------- --------- --------- --------------
Total import time 1000000 1000000 0 51.274s

附上commands.load和commands.mysql

commands.load:
LOAD CSV
FROM '/tmp/ytt.csv' WITH ENCODING UTF-8
(
id, rank, log_time
)
INTO postgresql://t_girl:t_girl@127.0.0.1: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 DATABASE
FROM mysql://python_user:python_user@192.168.1.131:3306/t_girl?t1
INTO postgresql://t_girl:t_girl@127.0.0.1:5432/t_girl?ytt.t1 with data only SET maintenance_work_mem to '64MB',
work_mem to '3MB',
search_path to 'ytt'; 附pgloader 手冊:
http://pgloader.io/howto/pgloader.1.html

最新文章

  1. 基于OpenCV 的iOS开发
  2. Hibernate 注解的用法以及说明(二)
  3. 连接mysql遇到的问题
  4. svn resolve/merge
  5. 避免HTML5六种错误用法
  6. 研究CPU的好文章以及博客
  7. mysql开启函数功能
  8. C语言字符串函数大全
  9. BAPI_GOODSMVT_CREATE 移动类型201 CODE = '03' 代码
  10. java中final小结
  11. webpack模块定义和使用的模式
  12. Linux记录-lsof打开文件工具常用操作
  13. koa2 接收post参数
  14. X86主要的几种寻址方式
  15. MongoDB 集合命令
  16. 使用 libffi 实现 AOP
  17. 同一个IIS绑定多个Htts 站点问题
  18. 31、LinkedHashSet简介和练习
  19. Android开发资料
  20. C# WinForm页面切换导致闪烁的解决方法(转)

热门文章

  1. 结构体UT_LIST_ADD_LAST
  2. jquery 图片无缝切换
  3. 触摸屏网站开发系列(一)-ios web App应用程序(ios meta)
  4. idea开发工具中你可能不知道的却又比较好用的快捷键
  5. 开源项目ets_cache分析
  6. NGINX(三)HASH表
  7. Velocity是如何工作的
  8. PHP 通用检测函数集
  9. 将UIWebView显示的内容转为图片和PDF
  10. C 语言控制台实现五子棋项目