資料遷移 從SqlServer到Oracle

2021-06-13 17:30:42 字數 1332 閱讀 8774

要把sqlserver中的資料遷移到oracle有多種方法。如果資料量小,可以直接使用sql語句生成器(sqldatatoscript.exe)直接生成sql語句。如果資料量大,建議使用sql loader工具進行資料遷移。

具體步驟如下:

1.建立中間庫表。

之所以需要建立中間庫表是因為,sqlserver中的源資料表結構,欄位名可能與oracle目標資料表結構,欄位不一致。建立與oracle中目標資料表一致的的中間庫表有助於最終資料的匯入。並且保留乙個資料備份。

(另外,考慮到建表時由於其他原因可能會反覆建或者新增表,建議在新建表前都先判斷一下資料表是否已經存在於資料庫中。

if exists (select count(*) from sysobjects where upper(name) ='table1')

drop table table1

create table table1(...)

)    

2.初始化中間庫資料。

將sqlserver中的源資料經過一定的轉化插入到中間庫表中。

3.匯出中間庫資料。

匯出命令如下:bcp.exe [database].[dbo].tablename out "path\tablename.txt"  -c -r"℡" -t"||" -s "ip" -u "username" -p "p

assword

"bcp命令的具體格式可以直接到網上搜尋。把所有表的匯出命令寫到乙個txt檔案中,並改擴充套件名為bat。

4.編寫資料表控制檔案。

每個表編寫乙個控制檔案,檔案的擴充套件名為ctl。具體內容如下:

如果表中有時間型別字段需要做點轉換。fieldtime"to_date(substr(:fieldname,1,19),'yyyy-mm-dd hh24:mi:ss')"

5.編寫資料表的匯入檔案。

每個表編寫乙個匯入命令檔案,擴充套件名為bat。具體內容如下:

碟符:cd 碟符:\控制檔案上一層位址

sqlldr 使用者名稱/密碼@資料庫名 control="ctrl\tablename.ctl" log="log\tablename.log"    bad="data\bad\tablename.bad" errors=100  rows=1000 bindsize=3072000 streamsize=3072000 readsize=839288

move /y data\tablename.txt  data\bak\tablename.txt

pause

當資料表較多時,可以在oracle資料庫中建乙個package自動生成需要遷移的表的控制檔案和匯入命令檔案。

6.建乙個批量執行匯入檔案的bat檔案。

遷移sqlserver資料到MongoDb

前言 隨著資料量的日積月累,資料庫總有一天會不堪重負的,除了通過新增索引 分庫分表,其實還可以考慮一下換個資料庫。我強烈推薦使用mongodb,我舉例說一下我的經歷 我的專案中有一張表的資料大概是3000萬行資料,sqlserver查詢的速度是16秒左右。我匯入到mongodb中後查詢的速度大概能快...

從EXCEL匯入資料到SQL SERVER

從excel匯入資料到sql server 左直拳 介紹兩種途徑將資料從excel中匯入到sql server。一 在程式中,用ado.net。如下 連線串 string strconn provider microsoft.jet.oledb.4.0 extended properties exc...

從EXCEL匯入資料到SQL SERVER

從excel匯入資料到sql server 左直拳 介紹兩種途徑將資料從excel中匯入到sql server。一 在程式中,用ado.net。如下 連線串 string strconn provider microsoft.jet.oledb.4.0 extended properties exc...