在MySQL中快速的插入大量测试数据.
很多时候为了测试数据库设计是否恰当,优化SQL语句,需要在表中插入大量的数据,怎么插入大量的数据就是个问题了。 最开始想到的办法就是写一个程序通过一个很大的循环来不停的插入,比如这样: int i = LOOP_COUNT; while(i–>=0){ //insert data here. } 不过我在这么做的时候发现这样插入数据非常的慢,一秒钟插入的数据量还不到100条,于是想到不要一条一条的插入,而是通过 INSERT INTO TABLE VALUES (),(),(),()… 这样的方式来插入。于是修改程序为: int i = LOOP_COUNT; StringBuilder stringBuilder; while(i–>=0){ if(LOOP_COUNT!=i && i%5000==0){ //通过insert values的方式插入这5000条数据并清空stringBuilder } stringBuilder.append(“(数据)”); } //插入剩余的数据 这样做的插入速度是上升了很多,不过如果想要插入大量的输入,比如上亿条,那么花费的时间还是非常长的。 查询MySQL的文档,发现了一个页面:LOAD DATA INFILE 光看这个名字,觉得有戏,于是仔细看了下。 官方对于这个命令的描述是: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘file_name’ [REPLACE | IGNORE] INTO TABLE tbl_name [CHARACTER [...]
又放出个小工具:ConvertDB Sync Tools
因为自己需要转换MSSQLServer的数据到MySQL上,需要转换的表数量也有点大,同时表的结构也发生了变化,最开始的想法是直接针对每个需求写同台的Console程序的。 不过写了一个后,发现这样的工作量太大了,于是就有了下面这个工具ConvertDB Sync Tools的诞生,命名有点大,当时乱敲进去的。 功能: 自定义SQL,读取MSSQL SERVER的数据,生成Mysql适用的SQL语句。就这么简单.. 支持转换配置的保存和载入(储存连接字符串、SQL、转换列数据)。 写的很急促和粗糙。 下载地址:ConvertDB Sync Tools