« SQLULDR2生成Insert SQL语句 »
Tools » http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html 2009-10-28导出与导入之间如果可以用管道符, 则可以节约生成文件的时间, 以缩减数据迁移的时间, SQLULDR2和Oracle的SQL * Loader可以这样用, 在跨网络迁移数据时, 也行可以用"导出->压缩->网络->解压->导入"这样的管理流程. 这段时间在测试从Oracle向MySQL迁移数据时, 发现MySQL的LOAD DATA命令无法从标准输入读入数据, 也就是没有办法进行普通的管道操作, 必须导出成文件, 然后导入文件.
考虑到MySQL没有绑定变量的概念, 其实都是文本SQL操作, 因此使用Insert的性能也许不比LOAD DATA差. 在加入MySQL标准的转义符支持后, 要生成INSERT语句也很容易, 就在SQLULDR2中加入了这个功能.
使用SQLULDR2的FORMAT参数, 可以实现这个功能.
sqluldr2 ... table=tablename format=mysql null=null escape=0x5c quote=0x27
这时在输出文件中, 就是INSERT语句, 如下所示, 一个批处理(由ARRAY参数决定)是一条INSERT语句.
INSERT INTO tablename (COL1,COL2,COL3) VALUES
('A\\B\"\t','2009-10-28 22:31:22',1),
('A\\B\"\t','2009-10-28 22:32:24',2);
当我们要迁移数据时, 就可以用管道操作了.
sqluldr2 ... table=table_name format=mysql null=null escape=0x5c quote=0x27 file=- | mysql database_name
这样迁移数据, 也许要比生成文件中转来得快, 有空找几百万条记录试试看. 并研究准备的插入语句, 是不是值得支持一下.


nice job
mysqlimport.exe =MySQL的LOAD DATA命令
也支持Oracle的Insert语句生成了, 不过新版本还没有上传.
这里有很多模拟数据
https://launchpad.net/test-db/+download