① 如何從sql Server遷移大批量數據到Oracle
下面要說的是如果將txt文本數據導入到Oracle中
Dos
環境下使用SQl*Loader命令
載入
使用其它資料庫的數據轉移工具
Oracle
企業管理器中的數據載入功能
具體的技術實現
一、Dos
環境下載入
1、首先,伺服器端的偵聽服務必須已經開啟。
測試方法:Dos
下輸入
C:/>sqlplus
username/password@serviceName
2、然後使用
Oracle
的
sqlldr
命令進行數據的導入
前期條件
1)
Oracle
資料庫端必須已經建好了需要導入的數據表的結構
2)
一個數據源文件
下面例子中為製表符分隔的文本文件
model.txt
,為Excel
表中導出的
3)
手工編輯一個XXX.CTL
的控制文件
4)
命令行載入數據
如下實例:
以下文件預設放到C:/
下,如果不是,就需要指明全路徑
1.
命令控制文件
input.ctl
內容
命令
說明
load
data
1、控制文件標識
infile
'model.txt'
2、要輸入的數據文件名為test.txt
append
into
table
system.塔位屬性表
3、向表test中追加記錄
fields
terminated
by
X'09'
4、指定分隔符,欄位終止於X'09',是一個製表符(TAB)
(編號,名稱,大小)
5、定義列對應表中順序
控制文件中指定插入數據的方式關鍵字
insert,為預設方式,在數據裝載開始時要求表為空
append,在表中追加新記錄
replace,刪除舊記錄,替換成新裝載的記錄
truncate,同上
在
Dos
窗口下使用
SQl*Loader
命令實現數據的導入
C:/>sqlldr
userid=system/manager@
serviceName
control=input.ctl
默認日誌文件名為:input.log
默認壞記錄文件為:input.bad
二、使用其它資料庫轉移工具
以下以SQL
Server
導入導出向導為例
1、在數據的導入導出向導中設置數據源伺服器,實例中選擇數據源選擇SQL
Server
2、然後指定要導入的Oracle
數據源
3、需要配置Oracle
的屬性信息
需要注意的是,登錄資料庫的用戶信息即為數據導入之後的方案名,即導入之後的SQL
Server
中的表在Oracle
中標志名為
username.表名
以下按照提示即可,可以完全導入SQl
Server
中的數據表和視圖,也可以使用查詢語句返回你要選擇的列或者行。
三、Oracle
企業管理器中的數據載入功能
登錄Oracle
的控制台界面,針對單獨的數據表可以使用數據載入工具
中間需要指定控制文件等,同Dos
載入一致,不再重復
----------------------------------------------------
向Oracle中導入文本數據時使用的控制文件格式
無論是使用上一篇中的哪種方式都需要有一個控制文件,下面是控制文件(ctl文件)書寫的基本格式:
命令
說明
load
data
1、控制文件標識
infile
'testl.txt'
2、要輸入的數據文件名為test.txt,此時是要導入的數據文件同控制文件在同一路徑下,如果不在同一路徑下則需要寫完整路徑名
append
into
table
表名(可以是全名也可以是同義詞)
3、向表test中追加記錄
fields
terminated
by
X'09'
4、指定分隔符,欄位終止於X'09',是一個製表符(TAB),如果用逗號分割就將X'09'替換為','
(編號,名稱,大小)
5、定義列對應表中順序
控制文件中指定插入數據的方式關鍵字
insert,為預設方式,在數據裝載開始時要求表為空
append,在表中追加新記錄
replace,刪除舊記錄,替換成新裝載的記錄
truncate,同上
控制文件的示例:
load
data
infile
'test.txt'
append
into
table
test.test
fields
terminated
by
X'09'
(test,test1,test2)
對有時間類型的數據導入的示例控制文件:
load
data
infile
'h:/TB_FACT_PHS_TICKET_DAY.txt'
Append
into
TABLE
TB_FACT_PHS_TICKET_DAY
fields
terminated
by
X'09'
(Time_Id
,Region_Id
,Cust_Type_Id
,Prod_Type_Id
,Acct_Item_Type_Id
,Acct_Item_Type_Cd
,Exchange97_Cd
,Latn_Cd
,Call_Duration
,Access_In_Duration
,Income
,In_Date
Date
"YYYY-MM-DD"
)
文件導入命令
C:/>sqlldr
userid=test/test@test
control=test.ctl(此時控制文件test.ctl存在C:/路徑下)
在命令控制符下進入Oracle
C:/>sqlplus
username/password@serviceName
oracle導入txt數據文件2008年07月30日
星期三
17:21把txt文件格式的數據文件導入oracle的方法是利用sqlloader工具。
第一步:把文本格式的數據文件放入C盤。如,test.txt
第二步:建立控制文件append.ctl。(名字可以隨便取,放C盤下)
append.ctl的內容如下:
load
data
--1、控制文件標識
infile
'test.txt'
--2、要輸入的數據文件名為test.txt
append
into
table
CTXSYS.test--3、向CTXSYS表空間中的表test中追加記錄
fields
terminated
by
X'09'
--4、欄位終止於X'09',是一個製表符
(id,username,password,sj)
-----定義列對應順序
其中append為數據裝載方式,還有其他選項:
a、insert,為預設方式,在數據裝載開始時要求表為空
b、append,在表中追加新記錄
c、replace,刪除舊記錄,替換成新裝載的記錄
d、truncate,同上
第三步:在命令提示符下輸入命令。
C:/>sqlldr
userid=username/password
control=c:/append.ctl
資料庫中用名的用戶名和密碼
或者
C:/>sqlldr
userid=system/manager@
serviceName
control=input.ctl
第二條命令中的system資料庫用戶名
manager密碼
@serviceName
是Oracle中本地配置文件的服務名
----------------------------------------------------
一些經常出現的問題:
1。關於日期格式的問題:
ctl基本寫法諸如:
load
data
infile
'C:/TP_LOANCONTRACTSUM.txt'
insert
into
table
TP_LOANCONTRACTSUM
fields
terminated
by
'|!'
(
column01,
column02,
column03,
column04
"to_date(:column04,'''yyyy-mm-dd
hh24:mi:ss''')",
column05
"to_date(:column05,'''yyyy-mm-dd
hh24:mi:ss''')",
column06,
column07,
column08,
column09,
column10,
column11,
column12
"to_date(:column12,'''yyyy-mm-dd
hh24:mi:ss''')",
column13
)
2。關於長字元串問題,CTL默認情況下是256位(或者256位左右),所以長字元串時會在log里報錯,提示所輸入的值超過最大長度,解決辦法,在ctl文件里再指定大小,注意個情況,不能寫VARCHAR只能寫CHAR,否則報錯,諸如:
load
data
infile
'C:/TP_PLEDGECONTRACTINFO.txt'
insert
into
table
TP_PLEDGECONTRACTINFO
fields
terminated
by
'|!'
(
column01,
column02,
column03,
column04,
column05,
column06,
column07
"to_date(:column07,'''yyyy-mm-dd
hh24:mi:ss''')",
column08,
column09,
column10
"to_date(:column10,'''yyyy-mm-dd
hh24:mi:ss''')",
column11,
column12,
column13,
column14,
column15
"to_date(:column15,'''yyyy-mm-dd
hh24:mi:ss''')",
column16,
column17,
column18
"to_date(:column18,'''yyyy-mm-dd
hh24:mi:ss''')",
column19,
column20,
column21,
column22,
column23,
column24,
column25
"to_date(:column25,'''yyyy-mm-dd
hh24:mi:ss''')",
column26
CHAR(500),
column27,
column28
)
② SQL資料庫轉移(將老資料庫添加到新資料庫)
把舊資料庫的 SQL服務停止,把資料庫的目錄下的 所需資料庫 復制到新的所需位置,用SQL2008的 附加資料庫,就可以保持原來的數據及表結構了
③ 如何把sqlserver的數據遷移到mysql中
以下有幾款遷移工具的對比,可以參考,比較推薦DB2DB.
軟體易用性主要是指軟體在導入前的配置是否容易。由於很多軟體設計是面向程序員而非一般的資料庫管理人員、甚至是普通的應用程序實施人員,而這一類人員很多時候並沒有數據源配置經驗。因為一些使用 ODBC 或者 ADO 進行配置的程序往往會讓這類用戶造成困擾(主要是不知道應該選擇什麼類型的資料庫驅動程序)。下面讓我們看看四個工具的設計界面:
>>>>
1、SQLyog
SQLyog使用的是古老的 ODBC 連接,但對於新一代的程序來說,這種方式的非常的不熟悉並且不容易使用,並且必須要求本機安裝好相應的資料庫的 ODBC 驅動程序(SQL Server 一般自帶好)。
>>>>
2、NavicatPremium
NavicatPremium是四個應用工具中設計最不人性化的一個:從上圖怎麼也想像不到要點按那個小按鈕來添加一個新的連接,並且這個連接設置不會保存,每次導入時都必須重新設置。NavicatPremium使用的是比 ODBC 稍先進的 ADO 設置方式(199X年代的產物),但使用上依然是針對老一代的程序員。
>>>>
3、Mss2sql
Mss2sql是最容易在網路上搜索出來的工具,原因之一是它出現的時間較早。
DB2DB同樣遷移 300萬數據時,僅僅使用了 2 分 44 秒,這個速度相當驚人。不過最後的結果出現一個 BUG,就是提示了轉換成功,但後面的進度條卻沒有走完(在後面的數據完整性評測中,我們驗證了數據其實是已經全部處理完畢了)。
④ 如何把sql server資料庫遷移到oracle
前陣做了下資料庫遷移,從Sql Server2005遷移到Oracle
10g,這里說一下遷移的方法。
Sql
Server和Oracle區別比較大,包括語法,欄位類型,資料庫機制,配置管理方法等等,區別是全方位的,做遷移需要注意很多問題,在遷移過程中也會遇到問題,需要細細處理之。這里說一下資料庫結構的遷移,和遷移過程中注意的一些問題。(當然具體的資料庫遷移過程中可能問題是不一樣的,具體問題具體分析了)
遷移的方法是從Sql Server已有資料庫中生成出Oracle的建庫腳本,然後在Oracle資料庫上執行。用到的生成工具是Power
Designer。
1、打開PD(Power
Designer簡稱,以下均使用PD),新建一個PDM(物理數據模型),DBMS選擇Microsoft SQL
Server2005,Model name起名叫做mssdb。
2、通過逆向工程將現有Sql
Server資料庫生成PDM
(1)選擇Database->Reverse
Engineer Database,配置數據源,選擇要遷移的資料庫,輸入用戶名、密碼。
(2)選擇資料庫,選擇用戶dbo下的所有表、視圖、存儲過程、方法、觸發器、序列等(由於Sql Server與oracle,資料庫概念上的區別,這里不需選擇用戶、角色)。
點擊OK,生成PDM。已經建立過PDM的情況,這一步可以省略。
3、生成Oracle物理數據模型
選擇Tools->Generate Physical Data Model
(1)DBMS選擇Oracle
10g,輸入名稱:oradb。
(2)在Configure Model
Options配置中, Model Settings的Table&View界面中,勾選Ignore
identifying owner。Oracle中用戶的概念與Sql Server不同,這里忽略owner。
(3)Selection標簽,選擇需要生成的所有表、視圖、外鍵、存儲過程、方法、觸發器、序列等。
點擊確定,即生成了oracle 的PDM。
注意,在生成PDM的過程中可能不會一帆風順,有可能會報錯(比如提示對象長度超限),這會導致生成失敗。這時需要根據具體錯誤提示做相應修改(可能需要多次調整,沒有辦法,誰讓兩者差別這么大的呢)。
4、生成Oracle腳本
與Sql
Server不同的是,在Oracle里表名、欄位名全部為大寫,若要單獨處理為小寫,需加上雙引號。而PD生成的腳本默認是有雙引號的,這里需要修改默認配置,去掉雙引號。
然後選擇oradb,然後選擇Database->Generate
Database,進入資料庫生成界面
在Format標簽下,去掉勾選Owner prefix,它將省掉建表語句前「dbo.」所帶來的麻煩;
在Selection標簽下,選擇要生成腳本的各對象;
在Preview標簽下,可以預覽預生成的腳本(表較多時,切換會比較慢)。
點擊確定,即得到生成的腳本。
5、檢查與調整
腳本是PD自動生成的,因為表比較多,在oracle上直接去執行難免會有錯誤。所以在執行之前需要檢查下腳本的正確性。這里提幾點需要注意的地方。
(1)Oracle要求表名、欄位名等長度最多是30位,而Sql Server沒有這個限制,所以可能會有在Sql
Server創建正常的表而在Oracle下會創建失敗。
(2)檢查一下主鍵、外鍵的名稱,它們有可能是隨機生成的名稱。可根據相應規范進行修改。
(3)檢查欄位名是否用到了Oracle的關鍵字。比如Sql
Server命名「備注」欄位可能會用「comment」、標題用「title」,但comment、title在Oracle中是關鍵字,不可以做為欄位名稱。
(4)存儲過程、方法是否符合Oracle語法。
(5)Sql
Server有自增欄位,而Oracle沒有。要實現此功能,需要相應創建序列、觸發器。
(6)Sql
Server中欄位類型為text的情況,如果是存二進制數據需要在Oracle中選用Blob欄位類型。
(7)Sql
Server有外鍵的情況,主表記錄刪除,從表記錄也會跟著刪除;而Oracle默認情況是當從表有記錄時,所對應的主表記錄不允許刪除。所以這種情況下外鍵需要添加外鍵級聯刪除。
(8)生成的表、視圖等個數是否正確,缺失的情況可單獨生成腳本。
系統不一樣,出現問題的點可能也不一樣,具體問題具體分析。
6、建庫
在Oracle資料庫服務(當然要先安裝好Oracle服務端、並建立資料庫)orcl實例下,使用用戶sys登陸並創建用戶orauser,並將resource、connect角色賦給orauser(這里,orauser使用默認表空間、默認臨時表空間)。
用剛創建的用戶orauser登陸orcl資料庫服務,執行前面已經生成的腳本,若干分鍾後腳本執行完畢,觀察一下執行過程中有無錯誤產生,也可以記錄執行的日誌以便日後查看;檢查看錶、視圖等個數與Sql
Server資料庫中是否一致。如果都正確,那麼,資料庫結構從Sql
Server到Oracle的遷移到此結束。當然,遷移的是否正確還需要在之後的使用中檢查,發現錯誤及時修改即可。
⑤ MSSQL數據遷移到MYSQL如何更快捷,求大神
navicat工具來將SQL Server數據遷移到MySQL
新建需要遷移的資料庫
打開資料庫,點擊導入向導
選擇數據導入格式
選擇數據源
設置連接屬性
選定要遷移的表
定義目標表
更改實際情況對目標表進行更改
選擇導入模式
開始導入
導入後結果
至此,遷移完成,可以更改實際情況再對遷移後的表進行更改。
⑥ sql server 怎麼遷移資料庫
1、真心不建議你遷移系統資料庫,太麻煩了。就一個系統用戶賬號就夠你累的了。
2、我一般都是在新計算機上安裝新的SQL服務實例,然後逐個遷移用戶資料庫
3、只需要向用戶貼出安民告示即可,也就半個小時到1一個小時,基本上全部搞定。
若非要遷移,那麼你可以這樣做:
首先遷移master資料庫,master資料庫是整個SQL Server實例的核心,所有的設置都存放在master資料庫里,如果master資料庫出現問題,整個實例都將癱瘓。首先打開SQL Server Configuration Manager,在左邊的列表框中選中SQL Server Services節點,然後在右邊的列表框中找到需要遷移系統資料庫的實例的那個SQL Server服務,比如說SQLServer(MSSQLSERVER),停止這個實例的服務(不會停的去菜場買塊豆腐撞死算了),然後右鍵單擊,選中最底下的「Properties」,並且切換到「Advanced」標簽,如下圖所示:
看到「Startup Parameters」了吧,這里的參數就是需要我們更改的。如下圖所示:
把這段字元整理一下就是這樣:
-dC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf;
-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;
-lC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
基本上看出來了吧,「-d」後面的就是master資料庫數據文件的位置,「-e」是該SQL Server實例的錯誤日誌所在的位置,至於「-l」就是master資料庫日誌文件所在的位置了。修改數據文件和日誌文件的路徑到適當為位置,錯誤日誌的位置一般不需要做變更,例如將數據文件存放到D盤的SQLData文件夾下,日誌文件存放到E盤的SQLLog文件夾下,則參數如下:
-dD:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG;-lE:\SQLLog\mastlog.ldf
點擊「OK」保存並關閉對話框。
⑦ 如何將SQL Server資料庫遷移到新伺服器中
移動到新路徑我們希望將這些資料庫文件移動到一個新路徑,鍵入新路徑就可以。本文我們移動到下面的路徑:D: SQLDATADatabase_Name_Here.mdf D:SQLLogsDatabase_Name_Here_1.ldf進度現在可以單擊確定按鈕,開始恢復資料庫。成功恢復你已經成功恢復移動完成資料庫文件。證據現在你已經成功恢復移動完成資料庫文件——更多證據。新查詢現在讓我們介紹我喜歡使用的方法,該方法省去了所有選擇和單擊。你可以使用一條TSQL Restore移動語句完成同樣的任務。使用T—SQL方法移動資料庫讓我們從打開SQL Server管理工具開始,然後單擊新查詢按鈕。邏輯名稱第一步需要運行下面的查詢:Restore FILELISTONLY FROM DISK='d:Business_Data.bak' 利用該查詢可以找到需要恢復到新路徑的資料庫和日誌文件的邏輯名稱。恢復到新路徑在獲得了邏輯名之後,我們可以使用下面的查詢將資料庫恢復到一個新位置。RESTOREDATABASEBusiness_Data_TSQLFROM DISK='d:Business_Data.bak'WITHMOVE 'Business_Data' TO 'D:TSQLBusiness_Data.mdf', MOVE 'Business_Data_log' TO 'D:TSQLBusiness_Data_log.ldf' 該語句將用來恢復資料庫到一個新路徑。完成百分比你可以看到Restore FileListOnly TSQL語句中使用的邏輯名和物理名。如果是一個較大的資料庫為了查看完成進度,還可以添加狀態語句如下所示:RESTOREDATABASEBusiness_Data_TSQLFROM DISK='d:Business_Data.bak'WITHMOVE 'Business_Data' TO 'D:TSQLBusiness_Data.mdf', MOVE 'Business_Data_log' TO 'D:TSQLBusiness_Data_log.ldf', STATS=5 本文中,我們介紹了完成的資料庫備份恢復方法。
⑧ mysql to sql server 2008遷移工具怎麼用
以下有幾款遷移工具的對比,可以參考,比較推薦DB2DB.
軟體易用性主要是指軟體在導入前的配置是否容易。由於很多軟體設計是面向程序員而非一般的資料庫管理人員、甚至是普通的應用程序實施人員,而這一類人員很多時候並沒有數據源配置經驗。因為一些使用 ODBC 或者 ADO 進行配置的程序往往會讓這類用戶造成困擾(主要是不知道應該選擇什麼類型的資料庫驅動程序)。下面讓我們看看四個工具的設計界面:
>>>>
1、SQLyog
SQLyog使用的是古老的 ODBC 連接,但對於新一代的程序來說,這種方式的非常的不熟悉並且不容易使用,並且必須要求本機安裝好相應的資料庫的 ODBC 驅動程序(SQL Server 一般自帶好)。
>>>>
2、NavicatPremium
NavicatPremium是四個應用工具中設計最不人性化的一個:從上圖怎麼也想像不到要點按那個小按鈕來添加一個新的連接,並且這個連接設置不會保存,每次導入時都必須重新設置。NavicatPremium使用的是比 ODBC 稍先進的 ADO 設置方式(199X年代的產物),但使用上依然是針對老一代的程序員。
>>>>
3、Mss2sql
Mss2sql是最容易在網路上搜索出來的工具,原因之一是它出現的時間較早。
DB2DB同樣遷移 300萬數據時,僅僅使用了 2 分 44 秒,這個速度相當驚人。不過最後的結果出現一個 BUG,就是提示了轉換成功,但後面的進度條卻沒有走完(在後面的數據完整性評測中,我們驗證了數據其實是已經全部處理完畢了)。
⑨ mysql資料庫遷移,有什麼工具或許辦法
可以用Mysql-front,先導出member的Excel文件,然後把user表也導出Excel,把第一個表的列拷貝到第二個Excel里,然後再把Excel文件導入到user表裡。
自己寫腳本遷移過去,where條件是member和user的對應關系(這里假定member和user對應關系使用name對應的)
update user,member set user.price=member.money,user.truename=member.nickname where user.name=member.name
⑩ 怎麼把sql資料庫從舊電腦移動到新電腦安裝
操作如下:
1.右鍵你需要的資料庫–>任務–>分離
2.找到你的sqlserver安裝文件夾
這里把你需要的資料庫(如jjj)的兩個相關文件拷貝到另一台電腦上,這里注意,你最好還是要放到sqlserver的這個文件夾,放別的地方可能會報錯,因為文件夾的讀寫屬性還有用戶許可權不一樣,反正修改起來特別麻煩。
3.到另一台電腦上,右鍵–>附加–>選擇你的mdf文件,確定,大功告成,資料庫成功導入,簡單吧!
我試了直接把文件復制過去,導入也成功了,所以不是很明白為什麼要分離,我在網上查了一下:
資料庫分離是指將資料庫文件從資料庫伺服器實例中分離出來,相當於關閉了資料庫。資料庫分離後,應用程序不能連接到該資料庫,資料庫文件可以被其它進程訪問。通常分離資料庫用於快速地將資料庫遷移到另一個SQLSERVER實例。
舊電腦把資料庫分離,用U盤把資料庫文件復制到新電腦,然後在資料庫里把附加舊電腦的資料庫文件上去就可以了