【原创】MySQL和PostgreSQL 导入数据对比
在虚拟机上测评了下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 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.037sPostgreSQL 自身COPY:(时间7秒)
t_girl=# copy t1 from '/tmp/t1.csv' with delimiter ','; COPY 1000000 Time: 7700.332 msPsycopg2 驱动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 手册:
本文出自 “上帝,咱们不见不散!” 博客,请务必保留此出处

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Python : 모래 시계 그래픽 도면 및 입력 검증을 시작 하기이 기사는 모래 시계 그래픽 드로잉 프로그램에서 Python 초보자가 발생하는 변수 정의 문제를 해결합니다. 암호...

Python 크로스 플랫폼 데스크톱 응용 프로그램 개발 라이브러리 선택 많은 Python 개발자가 Windows 및 Linux 시스템 모두에서 실행할 수있는 데스크탑 응용 프로그램을 개발하고자합니다 ...

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

많은 개발자들이 PYPI (PythonPackageIndex)에 의존합니다 ...

데이터 변환 및 통계 : 대규모 데이터 세트의 효율적인 처리이 기사는 제품 정보가 포함 된 데이터 목록을 다른 사람으로 변환하는 방법을 자세히 소개합니다 ...

흰색 영역을 찾기 위해 파이썬에서 고해상도 이미지를 처리하는 방법은 무엇입니까? 9000x7000 픽셀의 고해상도 사진 처리, 두 가지 그림을 정확하게 찾는 방법 ...

Python을 사용하여 FTP 서버에 연결하는 경우 지정된 디렉토리에서 파일을 얻고 특히 FTP 서버에서 텍스트를 다운로드 할 때 문제를 인코딩 할 수 있습니다.
