Mysql中快速导入数据

公司要求为产品做一个离线升级工具,代理商可以下载后直接双击这个exe对当前版本进行升级。工具的其中一个功能是升级前备份用户的数据,升级失败还原数据。之前代码中一直使用的是mysqldump.exe来备份,对小数据量的情况还是稳定的,

"..\mysqldump.exe" string.Format(" -h{0} -P{1} -u{2} -p{3} -q -R {4} > {5}"
, conn.Server, conn.Port, conn.UserID, conn.Password, conn.Database
, directoryPath + string.Format(@"\{0}.sql", conn.Database))

还原用的mysql.exe执行

"..\mysql.exe" string.Format("DROP DATABASE {0};CREATE DATABASE /*!32312 IF NOT EXISTS*/`{0}` /*!40100 DEFAULT CHARACTER SET utf8 */;", conn.Database);
string.Format(" -h{0} -P{1} -u{2} -p{3} --default-character-set=utf8 {4} < {5}"
,conn.Server,conn.Port,conn.UserID,conn.Password,conn.Database,backupFile)
整个DB71万条数据,数据+索引的大小是474M(大量使用了GUID主键).导出耗时约40秒,导入耗时约两分钟。
机子配置
由于有客户反映还原数据库耗时长,这边尝试针对历史表进行还原的优化

导出order_dish_history文件,总共26万条数据。

-hlocalhost -P3306 -uuserId -ppwd -q -R databaseName order_dish_history  --fields-terminated-by=‘Z‘ --tab="F:\Test\database"

使用mysqlimport来导入打数据量的历史表(这种方式要注意的是文件的路径必须相对于mysql数据文件的路径,导入的表是文件名)

-hlocalhost -P3306 -uroot --replace databaseName rmsdb\\order_dish_history.txt

26万条数据,耗时30秒

使用Load data infile的方式

LOAD DATA INFILE  ‘F:\\Test\\rmsdb\\order_dish_history.txt‘ INTO TABLE order_dish_history FIELDS TERMINATED BY ‘\Z‘

耗时跟mysqlimport差不多

时间: 2024-10-09 03:20:55

Mysql中快速导入数据的相关文章

MySQL中快速复制数据表方法汇总

本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表. 这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表. 示例如下: 将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下: CREATE TABLE mytbl_new LIKE production.mytbl; INSERT mytbl_new SELECT * FROM production.mytbl; 第一个命令

MySQL InnoDB 快速导入数据

今天把需要分析的数据导入到数据库中. 数据将近7000万条,在txt文件中存放,共5.75G.采用Load data infile 导入,最后花了18个小时导入.主要做了以下修改: 1. MySQL优化 key_buffer_size = 64M max_allowed_packet = 8M innodb_buffer_pool_size = 1024M innodb_flush_log_at_trx_commit = 0 innodb_support_xa = 0 2. MySQL设置 戳我

用命令从mysql中导出/导入表结构及数据

在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看:mysqldump最常用的:mysqldump -uroot -pmysql databasefoo table1 table2 > foo.sql这样就可以将数据库databasefoo的表table1,table2以sql形式导入foo.sql中,其中-uroot参数表示访问数据库的用户名是root,如果有密码还需要加上-p参数Eg: C:\Users\jack> mysqldump -uroo

数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑

我现在批量往数据库里导正式数据(sql insert),但是数据中有三列分别是岗位,办事处,大区,给的数据中只给了岗位的值,办事处的值可以通过岗位值在岗位表查到,大区的值可以通过办事处的值在办事处表里查到.现在我已经把其他数据都导进去了,只剩办事处和大区没有值,我该如何批量更新这两列的值啊 导入的数据的表: 岗位表: 办事处表: 本人sql不是很好,希望sql大神能给出来解惑一下,拜谢~ 数据库中批量导入数据,有两列的值需要从其他表中查出来,我现在没有思路,求解惑 >> mysql 这个答案描

(4.10) 快速导入数据

SQL Server快速导入数据分享 Posted in Other and tagged Database, 数据库, MSSQL, SQL Server, 导入数据, 分享on Apr 26, 2014. Viewd 61 times. 目录 目录 1.CTE 2.OpenRowSet/OpenDataSource 3.BULK INSERT 4.bcp 5.Shell 文/温国兵 SQL Server快速导入数据,可以尝试的方法如下:CTE.OpenRowSet/OpenDataSourc

【原创】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

oracle中imp导入数据中文乱码问题(转)

(转自  http://blog.chinaunix.net/uid-186064-id-2823338.html) oracle中imp导入数据中文乱码问题 用imp命令向oracle中导入数据后,所有查询出的中文字段都为乱码. 原则上不修改服务器端的字符集,修改服务器端的字符集会出现使用第三方工具登陆数据库出现乱码的情况(具体服务器端的字符集修改办法本文有详细介绍). 将DMP文件的字符集改成与Oracleo数据库服务器端一样之后导入可正常显示.本人的系统是RHEL 5.4 32bit 一.

MySQL和PostgreSQL 导入数据对比

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