2006年12月18日
mysql移至oracle的經驗記錄
上個星期都在忙處理mysql的資料匯到oracle中,本來是用sqlldr來處理,後來想到要處理的table很多,就開始找了一些工具來處理。試過了oracle官方軟体,但只支援mysql4.x;再找了Intelligent Converters,發現中文匯入會有問題,最後還是自已diy處理了.........
一些心得分享:
一些心得分享:
1、如需轉碼的話,可利用linux中的iconv這個指令處理,範列如下:
iconv -f big5 -t utf-8 test.ctl > test_utf8.ctl
2、如只是單純要資料的話,可使用下列的方法(我是指分段是以$):
select * into outfile 'tag.txt' fields terminated by '$' from t_tag;
3、如只是要ddl的話,可使用:
mysqldump -u root -p -d test-db > test_db_ddl.txt
4、如只是要得到insert的sql語法,可使用
mysqldump -u root -p -t --disable-keys -e --skip-extended-insert test_db_sql > test_db_sql.txt
5、可以利用一些linux的小工具幫忙處理資料格式,下列是我處理日期的範列(在日期前面加上to_date):
cat test.txt | sed -e 's/....-..-.. ..:..:../to_date(&,)/g' > test1.txt
6、因為mysql得到的insert後面是);,所以還要再處理
); ==> )
7、如oracle裏有規定no null的話,就要把空白值多一個空格
,, ==> ,' ',
8、如有換行的話,要用chr(10)取代
\r\n ==> '||chr(10)||'
9、資料格式都處理完後,寫一隻程式,然後把sql的文字檔讀入,然後再一行一行的寫入
10、完成~~
希望下次再處理mysql匯入oracle時,官方的軟体已有支援mysql5.x了,不然又要再diy一次了~~~=.="
iconv -f big5 -t utf-8 test.ctl > test_utf8.ctl
2、如只是單純要資料的話,可使用下列的方法(我是指分段是以$):
select * into outfile 'tag.txt' fields terminated by '$' from t_tag;
3、如只是要ddl的話,可使用:
mysqldump -u root -p -d test-db > test_db_ddl.txt
4、如只是要得到insert的sql語法,可使用
mysqldump -u root -p -t --disable-keys -e --skip-extended-insert test_db_sql > test_db_sql.txt
5、可以利用一些linux的小工具幫忙處理資料格式,下列是我處理日期的範列(在日期前面加上to_date):
cat test.txt | sed -e 's/....-..-.. ..:..:../to_date(&,)/g' > test1.txt
6、因為mysql得到的insert後面是);,所以還要再處理
); ==> )
7、如oracle裏有規定no null的話,就要把空白值多一個空格
,, ==> ,' ',
8、如有換行的話,要用chr(10)取代
\r\n ==> '||chr(10)||'
9、資料格式都處理完後,寫一隻程式,然後把sql的文字檔讀入,然後再一行一行的寫入
10、完成~~
希望下次再處理mysql匯入oracle時,官方的軟体已有支援mysql5.x了,不然又要再diy一次了~~~=.="
引用URL
http://cgi.blog.roodo.com/trackback/2579830
回應文章 
請問一下 那套oracle官方轉換軟體叫做什麼阿?
小弟我最近也為mysql資料轉到oracle裡在苦惱
看了大大的程式仍不得其解
請大大指導一下 或是給我那套軟體 感恩!!
小弟我最近也為mysql資料轉到oracle裡在苦惱
看了大大的程式仍不得其解
請大大指導一下 或是給我那套軟體 感恩!!
Posted by yuko
at 2007年03月21日 11:40
Posted by 睡貓
at 2007年03月21日 15:31