Home >> MySQL, oracle >> 从oracle中导出到mysql

从oracle中导出到mysql

前文我们有描述过 oracle超大数据导出为文本文件,这里是它的一片后续
(原文链接 http://ddbiz.com/?p=773)

从oracle中导出数据到mysql的方式很多,其中一种是通过dblink的方式,因为要安装oracle的odbc桥,而手头上又没有安装盘。另外感觉通过桥的方式,速度上也不一定能咋样。因此采用的是mysql的load data infile 方式。

oracle通过 utl_file 把数据转储位文本文件(4G的数据量导出用时就要30分钟,自己的磁盘IO太慢,没办法,用mysql装载,8000万数据,29分钟,这个方式还是不错的)。

这里的导出一般采用的是 \t 分割字段,\n 分割记录的方式,这是因为对于简单的字符串来说,任何可见字符都有可能是字串的内容。而转义符 \ 不能完全解决所有字符的含义,并给mysql导入数据增加困难。

用mysql的 load data infile 是一个非常快速的数据装载方式(我的测试1分钟可以导入500万条记录),基本语法为:

load data infile ‘yourfile.ext’
into table youtablename
character set flat-file-charset
fields terminated by ‘\t’
escaped by ”;

这里仅仅采用了最基本的几个定义:

  1. 装载的数据文件在 yourfile.ext, 该文件应该放置于mysql server 数据目录(服务端mysql可读的目录,当load data infile 不指定 local 时,将从服务器端读取文件)
  2. 设置字符集
    load data infile 默认采用的系统的[character_set_server]设置(参考 show variables like ‘character_set_server’;) .当数据表或者文件采用不同的编码格式时,最好能明确指出。
    character set binary 是一个特别参数,表明load data infile时不进行任何编码转换。
  3. 字段分割指定 tab 符
  4. 取消转义字符的定义 escaped by ”
  5. 在load data infile时,遇到最多的就是字段的分割和字符转义问题。希望上面的总结能有所帮助.


    (原文链接 http://ddbiz.com/?p=773)

留言/有话要说

Copyright © 2012 Dimensions Data Business. All rights reserved.
server process 2.639 seconds.
WP-Backgrounds Lite by InoPlugs Web Design and Juwelier Schönmann 1010 Wien