MySQL和PostgreSQL 导入数据对照

在虚拟机上測评了下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秒)

[[email protected] ~]# 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秒)

[[email protected] scripts]# python load_data.py
Running 5.969 Seconds.

Pgloader 导入CSV:(时间33秒)

[[email protected] 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秒)

[[email protected] 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:[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 DATABASE
     FROM mysql://python_user:[email protected]:3306/t_girl?t1
     INTO 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 手冊:
http://pgloader.io/howto/pgloader.1.html

MySQL和PostgreSQL 导入数据对照,布布扣,bubuko.com

时间: 2024-11-03 09:59:44

MySQL和PostgreSQL 导入数据对照的相关文章

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

在虚拟机上测评了下MySQL 和 PostgreSQL 的各种LOAD FILE方式以及时间. 因为是虚拟机上的测评,所以时间只做参考,不要太较真, 看看就好了. MySQL 工具: 1. 自带mysqlimport工具. 2. 命令行 load data infile ... 3. 利用mysql-connector-python Driver来写的脚本. PostgreSQL 工具: 1. pgloader 第三方工具. 2. 命令行 copy ... from ... 3. 利用psyco

MySQL和PostgreSQL 导入数据对比

在虚拟机上测评了下MySQL 和 PostgreSQL 的各种LOAD FILE方式以及时间. 因为是虚拟机上的测评,所以时间只做参考,不要太较真, 看看就好了.MySQL 工具:    1. 自带mysqlimport工具.    2. 命令行 load data infile ...    3. 利用mysql-connector-python Driver来写的脚本. PostgreSQL 工具:    1. pgloader 第三方工具.    2. 命令行 copy ... from

mysql 5.5 导入数据 和 [【乱码解决

今日导入数据到阿里云上的mysql 5.5,遇到乱码问题,参考了网上不少相关帖子,顺便记录下来,供参考: # mysql --version mysql  Ver 14.14 Distrib 5.5.40, for linux2.6 (x86_64) using readline 5.1 1)先查看编码信息: mysql> show variables like 'character%' -> ; +--------------------------+--------------------

MySQL 之 导出导入数据

导出数据库(sql脚本)  mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p --databases db_name > test_db.sql                 ##得到整个数据库,最全面::不要--databases也行,就是不够信息全面 mysql导出数据库一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p test_db users>

solr6.6教程-从mysql数据库中导入数据(三)

整理多半天的solr6.6,终于算是把solr6.6中配置数据库弄出来了,网上的文章千篇一律,各说个的,没有一篇统一覆盖solr6.6版本配置的 帖子,本章节我会把配置的一些注意事项一一列举,由于时间原因,本片只介绍如何一次性导入数据,不附带增量导入,想看增量的同学可以在后面的文章中. 1,配置准备 本文的前提是你已经配置好了solr,并新创建了一个core,我们下面都会按照前一篇文章中的core_demo为基础开始 2,修改soreconfig.xml 在soreconfig.xml的<req

使用 Navicat 8.0 管理mysql数据库(导出导入数据)

http://dxcns.blog.51cto.com/1426423/367105 使用Navicat For MySql 将mysql中的数据导出,包括数据库表创建脚本和数据 (1)数据的导出:右键--->“转储sql文件” 至此,已完成了数据的导出操作. (2)数据的导入:先创建好数据库,这时数据库是空的,接下来我们进行数据导入:选择需要导入数据的数据库名,右键 > 运行批次任务文件 选择刚才我们导出的SQL文件 好,下面我们点开始, 待执行完后,就完成数据导入了

mysql导出和导入数据mysqldump,source

导出数据库(mysqldump): 导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -uroot -pgameol32! lottery >/home/lottery.sql(输入密码后即可开始导出数据库) (如果导出单张表,在数据库名后面输入表名即可) 将导出的数据库.sql文件同步到需导入的服务器的上(rsync): rsync -av /home/lottery.sql 10.10.86.100:/home/ 目标服务器需要开启fire

solr4从mysql数据库中导入数据

实际项目中,我们需要把已存在于数据库中的数据导入到solr索引库中,solr给我们提供了一个非常简便的方式DIH,下面我们以mysql数据为例. 1.进入你的core(如collection1),新建一个目录lib. 2.拷贝mysql-connector-java-5.1.14.jar到新建的lib目录中. 3.从solr的解压文件目录中找到“E:\solrbase\example-DIH\solr\db\conf”下的db-data-config.xml文件到你的core(如collecti

mysql单表导入数据,全量备份导入单表

(1)"导出"表 导出表是在备份的prepare阶段进行的,因此,一旦完全备份完成,就可以在prepare过程中通过--export选项将某表导出了: innobackupex --apply-log --export /backup/xbackup/full/ #这个需要在备份的目录下面执行. 后面的路径是备份的目录.(重要) 不是自己定义的目录. # innobackupex --apply-log --export /path/to/backup innobackupex --a