轉移oracle資料到sql server express版

話說要轉移oracle的資料到sql server有ssma可以用

轉移到express就沒有了

這時候可以用一點小手段來轉資料

話說要轉移oracle的資料到sql server有ssma可以用

轉移到express就沒有了

這時候可以用一點小手段來 轉資料

例如匯出csv檔案來轉就是我現在使用的方式

原本我是用toad來將select出來的grid另存成csv來讓sql server express用bluk insert塞資料

但是後來發現這樣實在太沒效率了

一來因為這樣不僅要浪費掉一個toad(他都要再那邊等待匯出完畢)

所以有其他工作我就要再多開一個toad

再來就是這樣記憶體吃得太恐怖了

光是一個toad做匯出250萬筆資料就要吃掉將近500mb Orz…

 

後來查了一下發現在sqlplus中有spool 可以使用

就來測試一下吧

 


set define on
set verify off
set heading off
set serveroutput off
set feedback off
set time off
set pagesize 0
set trimspool on
set linesize 1000
spool d:\sqlplusall_tables.txt
SELECT      owner
         || ','
         || table_name
         || ','
         || status
         || ','
         || tablespace_name
         || ','
         || num_rows
            joinString
  FROM   all_tables
spool off

這邊的重點是pagesize要設定為0不然會預設分頁

還有linesize要設定大一點,不然最後會給你一份有自動段行的csv

最後就是如果你沒有加上set trimspool on的話就會用linesize設定的數字來自動幫你輸出的結果補空白(最後檔案也會大蠻多的)

用sqlplus的一個好處是你可以把以上的sample存成一個檔案

然後在sqlplus中直接@檔案完整名稱位置

image

就可以直接執行了

 

最後在打開sql server用bulk insert一口氣把資料倒進去就好囉

那其他的trigger、store procedure、function那些物件就還是只能自力救濟了

最後用sqlplus執行起來也才吃7~8mb而已,真是痛快~有效率

BULK INSERT