新聞中心
在實(shí)際數(shù)據(jù)管理中,經(jīng)常需要將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù)中。如果數(shù)據(jù)庫(kù)結(jié)構(gòu)相同,只需使用SQL命令進(jìn)行快速?gòu)?fù)制和粘貼即可完成。但是,如果結(jié)構(gòu)不同,則需要實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換和映射。在本文中,我們將討論如何使用SQL實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入的技巧以及一些常見(jiàn)的問(wèn)題和解決方案。

1. 數(shù)據(jù)庫(kù)之間的結(jié)構(gòu)差異
當(dāng)兩個(gè)不同的數(shù)據(jù)庫(kù)之間存在差異時(shí),將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù)可能會(huì)遇到一些挑戰(zhàn)。例如,數(shù)據(jù)類(lèi)型不同、列名不同、表結(jié)構(gòu)不同等。
例如,在MySQL中,DATE類(lèi)型使用YYYY-MM-DD格式保存,但在Oracle中DATE類(lèi)型可以保存其他格式的時(shí)間戳。在這種情況下,我們需要使用SQL語(yǔ)句將數(shù)據(jù)從MySQL轉(zhuǎn)換為Oracle DATE類(lèi)型:
SELECT DATE_FORMAT(`date_column`, ‘YYYY-MM-DD HH:MI:SS’) AS `date_column`
FROM `source_table`
在這個(gè)例子中,我們使用DATE_FORMAT函數(shù)根據(jù)Oracle的時(shí)間戳格式轉(zhuǎn)換MySQL的時(shí)間格式。我們將轉(zhuǎn)換后的`date_column`列插入目標(biāo)表中。
2. 插入重復(fù)鍵值
在將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫(kù)復(fù)制到另一個(gè)數(shù)據(jù)庫(kù)時(shí),我們需要確保不會(huì)插入重復(fù)的數(shù)據(jù)記錄。在某些情況下,我們需要使用復(fù)合主鍵來(lái)避免在目標(biāo)數(shù)據(jù)庫(kù)中重復(fù)插入相同的記錄。
例如,在我們的源數(shù)據(jù)庫(kù)中,我們有一個(gè)類(lèi)似于以下結(jié)構(gòu)的表:
CREATE TABLE `orders` (
`order_id` INT(11) NOT NULL,
`customer_id` INT(11) NOT NULL,
`order_date` DATETIME DEFAULT NULL,
PRIMARY KEY (`order_id`)
);
我們的目標(biāo)數(shù)據(jù)庫(kù)表結(jié)構(gòu)類(lèi)似:
CREATE TABLE `orders` (
`order_id` INT(11) NOT NULL,
`customer_id` INT(11) NOT NULL,
`order_date` DATETIME DEFAULT NULL,
PRIMARY KEY (`order_id`, `customer_id`)
);
在此情況下,在插入之前,我們需要確保記錄唯一,否則會(huì)插入失敗。為此,我們可以使用以下INSERT INTO語(yǔ)句:
INSERT INTO `target_database`.`orders` (`order_id`, `customer_id`, `order_date`)
SELECT `order_id`, `customer_id`, `order_date`
FROM `source_database`.`orders`
WHERE (`order_id`, `customer_id`) NOT IN
(SELECT `order_id`, `customer_id` FROM `target_database`.`orders`);
在這個(gè)例子中,我們使用復(fù)合主鍵`order_id`和`customer_id`來(lái)避免在目標(biāo)數(shù)據(jù)庫(kù)中重復(fù)插入記錄。同時(shí),我們使用嵌套SELECT語(yǔ)句來(lái)確保不要將重復(fù)的記錄插入表中。
3. 使用全局唯一標(biāo)識(shí)符(GUID)
在某些情況下,我們需要保留哪些記錄已導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)中的信息,以避免重復(fù)。為了實(shí)現(xiàn)這一目的,我們可以使用全局唯一標(biāo)識(shí)符(GUID)來(lái)標(biāo)識(shí)每個(gè)導(dǎo)入的記錄。
例如,在我們的源數(shù)據(jù)庫(kù)中,我們有一個(gè)類(lèi)似于以下結(jié)構(gòu)的表:
CREATE TABLE `employees` (
`employee_id` INT(11) NOT NULL,
`first_name` VARCHAR(50) DEFAULT NULL,
`last_name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`employee_id`)
);
我們的目標(biāo)數(shù)據(jù)庫(kù)表結(jié)構(gòu)類(lèi)似:
CREATE TABLE `employees` (
`employee_id` INT(11) NOT NULL,
`first_name` VARCHAR(50) DEFAULT NULL,
`last_name` VARCHAR(50) DEFAULT NULL,
`guid` CHAR(36) DEFAULT NULL,
PRIMARY KEY (`employee_id`)
);
在此情況下,我們可以使用以下INSERT INTO語(yǔ)句:
INSERT INTO `target_database`.`employees` (`employee_id`, `first_name`, `last_name`, `guid`)
SELECT `employee_id`, `first_name`, `last_name`, UUID()
FROM `source_database`.`employees`;
在這個(gè)例子中,我們使用UUID()函數(shù)為每個(gè)導(dǎo)入的記錄生成GUID。在將數(shù)據(jù)從源數(shù)據(jù)表中復(fù)制到目標(biāo)數(shù)據(jù)表時(shí),我們將GUID值插入目標(biāo)表中。這些GUID值將作為標(biāo)識(shí)符使用,以確定哪些記錄已導(dǎo)入到目標(biāo)數(shù)據(jù)庫(kù)。
在跨數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入過(guò)程中,需要處理多種方式導(dǎo)致的問(wèn)題。但是,通過(guò)使用SQL語(yǔ)言,我們可以解決許多這些問(wèn)題,并實(shí)現(xiàn)有效的數(shù)據(jù)導(dǎo)入。本文中提供的技巧可以作為起點(diǎn),幫助您更好地處理不同的數(shù)據(jù)遷移復(fù)制任務(wù)。
相關(guān)問(wèn)題拓展閱讀:
- C#+SQL語(yǔ)句怎樣實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)間導(dǎo)數(shù)據(jù)
- sql數(shù)據(jù)庫(kù)如何導(dǎo)出?
C#+SQL語(yǔ)句怎樣實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)間導(dǎo)數(shù)據(jù)
.假設(shè)兩個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)完全一致,包括所有的表結(jié)構(gòu)定義,鍵約束關(guān)系,等等,那么,你可以按下面的思路來(lái)進(jìn)行導(dǎo)庫(kù):
首先,用ADO或RDO連接指定的源數(shù)據(jù)庫(kù)A和目標(biāo)數(shù)據(jù)庫(kù)B;
其次,用查詢(xún)語(yǔ)句查詢(xún)庫(kù)A系統(tǒng)表,如果你沒(méi)用過(guò)ACCESS的系統(tǒng)表,你可以打開(kāi)ACCESS后,點(diǎn)“工具”–“選項(xiàng)”,在“視圖”頁(yè)里有一個(gè)“系統(tǒng)對(duì)象”,勾選后確定,雀罩你就會(huì)看到在“表”對(duì)象窗口又多出了幾個(gè)表,打開(kāi)看看,就會(huì)明白,有些保存了表的名稱(chēng)信息,有些保存了每個(gè)表的各列列名等等,而且一般是通過(guò)ID能夠進(jìn)行關(guān)聯(lián)查詢(xún)的。有了這些信息,我相信你生成個(gè)T-sql語(yǔ)句把每個(gè)表名稱(chēng)都查出來(lái)不成問(wèn)題吧。
第三,用編程語(yǔ)乎歲局言(VB、C#等)便歷每個(gè)表,用鏈接歲讓數(shù)據(jù)庫(kù)的形式把鏈接表內(nèi)容入目的表(快辦法);或便歷每個(gè)源表后,用程序?qū)崿F(xiàn)遍歷每條記錄,逐行插入目的表(笨辦法)。
sql數(shù)據(jù)庫(kù)如何導(dǎo)出?
之一步:查看需要備份的數(shù)據(jù)庫(kù)
登入SQL Server Management Studio后,在右側(cè)打開(kāi)樹(shù)狀圖可以看帆拿帶到相關(guān)數(shù)據(jù)庫(kù)。
第二步:數(shù)據(jù)庫(kù)脫機(jī)
選中需要備份的數(shù)據(jù)庫(kù)后,選中“任務(wù)”->“脫機(jī)”,脫機(jī)時(shí)候,必須關(guān)掉表、查詢(xún)等。
第三步:確認(rèn)脫機(jī)成功
脫機(jī)這一步很重要,因?yàn)椴幻摍C(jī),直接復(fù)制這兩個(gè)文件會(huì)報(bào)錯(cuò),所以必須得脫機(jī)。請(qǐng)確保出線一下態(tài)蘆提示界面,才能保證脫機(jī)成功。
第四步:復(fù)制備份文件
進(jìn)入你的數(shù)據(jù)庫(kù)安裝目錄,相對(duì)位置如“\Microsoft SQL Server\MSSQL.1\MSSQL\Data”文件夾,在這個(gè)文件夾內(nèi),選擇你要復(fù)制的數(shù)據(jù)庫(kù)文件(.mdf和.ldf),然后粘貼到你需要備份的地方敏嫌即可。
1、打開(kāi)SQL Server,找到需要導(dǎo)出的數(shù)據(jù)庫(kù)。
2、在需要導(dǎo)出的數(shù)據(jù)庫(kù)上右擊,選擇任務(wù)選項(xiàng)中的導(dǎo)出數(shù)據(jù)選項(xiàng)。
3、SQL Server導(dǎo)入和導(dǎo)出向?qū)Т翱谥?,單擊下一步按鈕。
4、選擇數(shù)據(jù)源對(duì)話框中,選擇數(shù)據(jù)源選項(xiàng)虛兆皮中的Microsoft OLE DB Provider for SQL Server選項(xiàng)。
5、選擇使用SQL Server身份驗(yàn)證,輸入
用戶(hù)名
和密碼,選擇要導(dǎo)出的數(shù)據(jù)庫(kù),單擊下一步。
6、選擇目標(biāo)對(duì)話框中,選擇目標(biāo)選項(xiàng)中的Microsoft OLE DB Provider for SQL Server選項(xiàng)。
7、選猜擾擇使用SQL Server身份驗(yàn)證,輸入用戶(hù)名和密碼,單擊新建按鈕。
8、出現(xiàn)的創(chuàng)建數(shù)據(jù)庫(kù)窗口中,在名稱(chēng)處輸入一個(gè)導(dǎo)出數(shù)據(jù)庫(kù)的名字,本例為NewData。
9、可以看到在數(shù)據(jù)庫(kù)選項(xiàng)差差中,多出了一個(gè)NewData的名稱(chēng),單擊下一步。
10、指定復(fù)制或查詢(xún)對(duì)話框中,選擇復(fù)制一個(gè)或多個(gè)表或視圖的數(shù)據(jù)選項(xiàng),單擊下一步。
11、選擇源表和源視圖對(duì)話框中,選擇自己要導(dǎo)出的表和視圖。
12、運(yùn)行包對(duì)話框中,單擊完成按鈕。
13、數(shù)據(jù)就成功導(dǎo)出了。
一、導(dǎo)出導(dǎo)入SQL Server里某個(gè)數(shù)據(jù)庫(kù)
1.在SQL Server企業(yè)管理器里選中要轉(zhuǎn)移的數(shù)據(jù)庫(kù),按鼠標(biāo)右鍵,選所有任務(wù)->備份數(shù)據(jù)庫(kù)。
2.備份 選數(shù)據(jù)庫(kù)-完全,
目的 備份到 按添加按鈕
文件名 在SQL Server服務(wù)器硬盤(pán)下輸入一個(gè)自定義的備份數(shù)據(jù)庫(kù)文件名(后綴一般是bak)
重寫(xiě) 選重寫(xiě)現(xiàn)有媒體
最后按確定按鈕。
如果生成的備份數(shù)據(jù)庫(kù)文件大于1M,要用壓縮工具壓縮后再到Internet上傳輸。
3.通過(guò)FTP或者remote desktop或者pcanywhere等方法
把第二步生成的備份數(shù)據(jù)庫(kù)文件或者其壓縮后的文件傳到目的SQL Server數(shù)據(jù)庫(kù),如果有壓縮要解壓。
4.目的SQL Server數(shù)據(jù)庫(kù)如果還沒(méi)有此數(shù)據(jù)庫(kù),先創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù);
然后選中這個(gè)新創(chuàng)建的數(shù)據(jù)庫(kù),按鼠標(biāo)右鍵,選所有任務(wù)->還原數(shù)據(jù)庫(kù)
還原->從設(shè)備->選擇設(shè)備->磁盤(pán)->添加(找到要導(dǎo)入的備份數(shù)據(jù)庫(kù)文件名)->確定
還原備份集->數(shù)據(jù)庫(kù)-完全
最后按確定按鈕。完全的數(shù)據(jù)庫(kù)導(dǎo)入成功了。
(如果在已經(jīng)存在的SQL Server數(shù)據(jù)庫(kù)上還原數(shù)據(jù)庫(kù)可能遇到有還有其它人正在使用它而恢復(fù)操做失敗,
可以去看 ->管理->當(dāng)前活動(dòng)->鎖/對(duì)象->找到數(shù)據(jù)庫(kù)下鎖的進(jìn)程號(hào)->到查詢(xún)分析器里用kill 進(jìn)程號(hào)殺掉這些鎖,然后再做還原)
注意:如果在原有的目的SQL Server數(shù)據(jù)庫(kù)上從備份文件(*.bak)還原數(shù)據(jù)庫(kù)會(huì)把已經(jīng)存在的表、存儲(chǔ)過(guò)程等數(shù)據(jù)庫(kù)對(duì)象全部替換成最近這次導(dǎo)入的備份數(shù)據(jù)庫(kù)里的內(nèi)容。
如果一定要還原備份文件(*.bak)里部分?jǐn)?shù)據(jù),需要另外建一個(gè)新數(shù)據(jù)庫(kù),其邏輯名稱(chēng)和數(shù)量同備份文件(*.bak)里數(shù)蠢搜旁據(jù)庫(kù)的邏輯名稱(chēng)和數(shù)量一致;
新數(shù)據(jù)庫(kù)的物理文件名稱(chēng)取得一定要和備份文件(*.bak)里數(shù)據(jù)庫(kù)的物理文件不一樣才行。
二、導(dǎo)出導(dǎo)入SQL Server里某個(gè)表
1.沒(méi)有防火墻,同一個(gè)局域網(wǎng)里或不在同一個(gè)局域網(wǎng)里,但通過(guò)Internet可以互相訪問(wèn)
在SQL Server企業(yè)管理器里選中目的數(shù)據(jù)庫(kù) ,按鼠標(biāo)右鍵,選所有任務(wù)->導(dǎo)入數(shù)據(jù)-> 彈出數(shù)據(jù)轉(zhuǎn)換服務(wù)導(dǎo)入/導(dǎo)出向?qū)Т翱?>下一步->選數(shù)據(jù)源-> 數(shù)據(jù)源(用于SQL Server的Microfost OLE DB提供程序)->服務(wù)器(可選擇局域網(wǎng)內(nèi)能訪問(wèn)帶橡到的所有SQL Server服務(wù)器,或者直接輸入IP地址)->選擇使用windows身份驗(yàn)證還是使用SQL Serve身份驗(yàn)證(輸入數(shù)據(jù)庫(kù)的用戶(hù)名和密碼)->數(shù)據(jù)庫(kù)(可選擇上面選中SQL Server服務(wù)器上所有權(quán)限范圍內(nèi)的數(shù)據(jù)庫(kù))->下一步->選擇目的->目的(用于SQL Server的Microfost OLE DB提供程序)->服務(wù)器(默認(rèn)為上一步里選中的導(dǎo)出服務(wù)器,也可以選其它局域網(wǎng)內(nèi)能訪問(wèn)到的所有SQL Server服務(wù)器,或者直接輸入IP地址)->目的數(shù)據(jù)庫(kù)(可選擇上面選中SQL Server服務(wù)器上所有權(quán)限范圍內(nèi)的數(shù)據(jù)庫(kù))->下一步->制定表復(fù)制或查詢(xún)->選從源數(shù)據(jù)庫(kù)復(fù)制表和視圖(也可以選擇用一條查詢(xún)指定要傳輸?shù)臄?shù)據(jù))->下一步->選擇源表和視圖->在要導(dǎo)入的表和視圖前面選中源->目的出現(xiàn)同樣的表名(可以手工修改成別的表名)->轉(zhuǎn)換->列映射和轉(zhuǎn)換里面可以修改源表和目的表之間字段的對(duì)應(yīng)關(guān)系,修改目的表字段的類(lèi)型和長(zhǎng)度等,并可以選擇創(chuàng)建目的表,在目的表中增加行,除去并重新創(chuàng)建目的表,啟用標(biāo)志插入等選項(xiàng)->確定->下一步->保存、調(diào)度和復(fù)制漏并包->時(shí)間->立即運(yùn)行(如果要實(shí)現(xiàn)隔一段時(shí)間自動(dòng)導(dǎo)出導(dǎo)入數(shù)據(jù),選調(diào)度DTS包以便以后執(zhí)行)->保存(可以不選)->下一步-> >->完成
正在執(zhí)行包->圖形界面顯示創(chuàng)建表及插入記錄的步驟和狀態(tài)->完成
2.經(jīng)過(guò)防火墻,不在同一個(gè)局域網(wǎng)里
?、?、導(dǎo)出表里的數(shù)據(jù)到文本文件:
在SQL Server企業(yè)管理器里選中目的數(shù)據(jù)庫(kù),按鼠標(biāo)右鍵,選所有任務(wù)-> 導(dǎo)入數(shù)據(jù)->彈出數(shù)據(jù)轉(zhuǎn)換服務(wù)導(dǎo)入/導(dǎo)出向?qū)Т翱?>下一步->選數(shù)據(jù)源-> 數(shù)據(jù)源(用于SQL Server的Microfost OLE DB提供程序)->服務(wù)器(可選擇局域網(wǎng)內(nèi)能訪問(wèn)到的所有SQL Server服務(wù)器)->選擇使用windows身份驗(yàn)證還是使用SQL Serve身份驗(yàn)證(輸入數(shù)據(jù)庫(kù)的用戶(hù)名和密碼)->數(shù)據(jù)庫(kù)(可選擇上面選中SQL Server服務(wù)器上所有權(quán)限范圍內(nèi)的數(shù)據(jù)庫(kù))->下一步->選擇目的->目的(文本文件)-> 文件名(在自己的電腦硬盤(pán)中生成一個(gè)自定義的文本文件) ->下一步->制定表復(fù)制或查詢(xún)->選從源數(shù)據(jù)庫(kù)復(fù)制表和視圖(也可以選擇用一條查詢(xún)指定要傳輸?shù)臄?shù)據(jù))->下一步->選擇目的文件格式->源(選擇要導(dǎo)出的表)->用默認(rèn)的帶分隔符->選之一行包含有列名稱(chēng)選項(xiàng)->下一步->保存、調(diào)度和復(fù)制包->時(shí)間->立即運(yùn)行(如果要實(shí)現(xiàn)隔一段時(shí)間自動(dòng)導(dǎo)出到文本文件,選調(diào)度DTS包以便以后執(zhí)行)->保存(可以不選)-> 下一步->>->完成
正在執(zhí)行包->圖形界面顯示表到文本文件的步驟和狀態(tài)->完成
如果生成的文本文件大于1M,要用壓縮工具壓縮后再到Internet上傳輸。
?、凇⑼ㄟ^(guò)FTP或者remote desktop或者pcanywhere等方法把
第①步生成的文本文件或者其壓縮后的文件傳到目的SQL Server數(shù)據(jù)庫(kù),如果有壓縮要解壓。
③、把文本文件導(dǎo)入目的SQL Server數(shù)據(jù)庫(kù)
直接把文本文件導(dǎo)入目的SQL Server數(shù)據(jù)庫(kù)里跟文本文件同名的新表名時(shí),默認(rèn)的會(huì)把所有字段類(lèi)型都變成字符串。
所以我們要這樣做:
在源SQL Server數(shù)據(jù)庫(kù)上先生成創(chuàng)建表的sql語(yǔ)句
在SQL Server查詢(xún)分析器里->選中源數(shù)據(jù)庫(kù)里表名->按右鍵->在新窗口中編寫(xiě)對(duì)象腳本->創(chuàng)建->復(fù)制下新窗口內(nèi)創(chuàng)建表名的sql語(yǔ)句到目標(biāo)SQL Server數(shù)據(jù)庫(kù)上查詢(xún)分析器里執(zhí)行創(chuàng)建表名的sql語(yǔ)句,生成空表結(jié)構(gòu)。(如果已經(jīng)存在這樣的表名,修改建表的sql語(yǔ)句,在表名后面加上導(dǎo)入時(shí)間的年月信息,例如table_0113)
調(diào)用導(dǎo)入/導(dǎo)出工具->彈出數(shù)據(jù)轉(zhuǎn)換服務(wù)導(dǎo)入/導(dǎo)出向?qū)Т翱?>下一步->選數(shù)據(jù)源-> 數(shù)據(jù)源(文本文件)->文件名(已傳到目的SQL Server數(shù)據(jù)庫(kù)下要導(dǎo)入的文本文件,后綴可以不是*.txt,但是常規(guī)文本編輯器能打開(kāi)的文件,文件類(lèi)型選全部)->下一步->選擇文件格式->用默認(rèn)的帶分隔符->選之一行包含有列名稱(chēng)選項(xiàng)->下一步->制定列分割符->逗號(hào)->下一步->選擇目的->目的(用于SQL Server的Microfost OLE DB提供程序)->服務(wù)器(可選擇目標(biāo)局域網(wǎng)內(nèi)能訪問(wèn)到的所有SQL Server服務(wù)器)-> 選擇使用windows身份驗(yàn)證還是使用SQL Serve身份驗(yàn)證(輸入數(shù)據(jù)庫(kù)的用戶(hù)名和密碼)->數(shù)據(jù)庫(kù)(可選擇上面選中SQL Server服務(wù)器上所有權(quán)限范圍內(nèi)的數(shù)據(jù)庫(kù))->下一步->選擇源表和視圖->修改目的表名為剛才創(chuàng)建的表名->轉(zhuǎn)換(在目的表中追加行) ->下一步->保存、調(diào)度和復(fù)制包->時(shí)間->立即運(yùn)行(如果要實(shí)現(xiàn)隔一段時(shí)間自動(dòng)把文本文件導(dǎo)入,選調(diào)度DTS包以便以后執(zhí)行)->保存(可以不選)-> 下一步->>->完成
正在執(zhí)行包->圖形界面顯示文本文件到表的步驟和狀態(tài)->完成
如果要更改導(dǎo)入時(shí)間的年月信息的表名,例如table_0113到原來(lái)的表名,在企業(yè)管理器里把原來(lái)的表名改成table_old_0113,table_0113改名成table。這會(huì)對(duì)應(yīng)用程序里頻繁訪問(wèn)的表照成一定的中斷。
注意:源表上的建的索引和主鍵約束不能用上面介紹的1和2方法轉(zhuǎn)移過(guò)來(lái),還需要手工來(lái)建索引和主鍵。
標(biāo)志種子和not null的約束可以繼承過(guò)來(lái)。
導(dǎo)入視圖時(shí)會(huì)把源視圖里所有的真實(shí)數(shù)據(jù)導(dǎo)入成一個(gè)新表,而不是視圖。
三、SQL Server存儲(chǔ)過(guò)程或用戶(hù)定義的函數(shù)導(dǎo)出導(dǎo)入
1、導(dǎo)出存儲(chǔ)過(guò)程或用戶(hù)定義的函數(shù)成*.sql文件
在SQL Server企業(yè)管理器里選中源數(shù)據(jù)庫(kù),存儲(chǔ)過(guò)程->單選或者多選中要轉(zhuǎn)移的存儲(chǔ)過(guò)程->用戶(hù)定義的函數(shù)->單選或者多選中要轉(zhuǎn)移的函數(shù)->按鼠標(biāo)右鍵,選所有任務(wù)->生成SQL腳本->確定->在自己的電腦硬盤(pán)中生成一個(gè)自定義的*.sql文件->保存->正在生成SQL腳本->成功
2、如果目的數(shù)據(jù)庫(kù)經(jīng)過(guò)防火墻,不在同一個(gè)局域網(wǎng)里,要通過(guò)FTP或者remote desktop或者pcanywhere等方法把第1步生成的*.sql文件傳到目的SQL Server數(shù)據(jù)庫(kù)服務(wù)器上。
3、用查詢(xún)分析器進(jìn)入SQL Server目的數(shù)據(jù)庫(kù),從菜單里選文件->打開(kāi)->打開(kāi)查詢(xún)文件->選中第1步生成的*.sql文件->點(diǎn)執(zhí)行查詢(xún)的綠色倒三角型快捷鍵->查詢(xún)窗口里會(huì)出現(xiàn)執(zhí)行后的消息(有時(shí)候可能因?yàn)榇鎯?chǔ)過(guò)程和用戶(hù)定義的函數(shù)之間有一定的依賴(lài)關(guān)系,會(huì)報(bào)一些錯(cuò)。
更好先執(zhí)行用戶(hù)定義的函數(shù)的*.sql文件,再執(zhí)行存儲(chǔ)過(guò)程的*.sql文件)
四、ORACLE數(shù)據(jù)庫(kù)里表導(dǎo)入SQL Server數(shù)據(jù)庫(kù)
1、在目的SQL Server數(shù)據(jù)庫(kù)服務(wù)器上安裝ORACLE Client軟件或者ORACLE ODBC Driver. 在$ORACLE_HOME\network\admin\tnsnames.ora里配置ORACLE數(shù)據(jù)庫(kù)的別名(service name)。
具體配置方法可以參考本站文章:客戶(hù)端連服務(wù)器的注意事項(xiàng)
2、在WIN2023或者win2023服務(wù)器->管理工具->數(shù)據(jù)源(ODBC)->系統(tǒng)DSN(本機(jī)器上NT域用戶(hù)都可以用)->添加->ORACLE ODBC Driver->完成->data source name 可以自定義,我一般填ORACLE數(shù)據(jù)庫(kù)的sid標(biāo)志,description里可以填ORACLE數(shù)據(jù)庫(kù)詳細(xì)描述,也可以不填->data source service name 填第1步定義的ORACLE數(shù)據(jù)庫(kù)別名->OK。
?。ㄓ脩?hù)DSN和文件DSN也可以類(lèi)似配置,但使用的時(shí)候有一些限制)
3、SQL Server的導(dǎo)入和導(dǎo)出數(shù)據(jù)工具里->選數(shù)據(jù)源-> 數(shù)據(jù)源(其它(ODBC數(shù)據(jù)源))->選第2步在ODBC里定義的系統(tǒng)DSN source name,用戶(hù)名密碼處填寫(xiě)ORACLE系統(tǒng)的用戶(hù)名和密碼->下一步->選擇目的,選SQL Server數(shù)據(jù)庫(kù)(跟上面第二點(diǎn)講的一致,就不重復(fù)了)。
注意:在ORACLE表和SQL Server表之間’轉(zhuǎn)換’那步很重要,可以改變默認(rèn)的字段數(shù)據(jù)類(lèi)型,如image->text,decimal->int
五、SQL Server數(shù)據(jù)庫(kù)里表導(dǎo)入ORACLE數(shù)據(jù)庫(kù)
方法一.導(dǎo)出目的選通過(guò)ODBC數(shù)據(jù)源里定義的ORACLE數(shù)據(jù)庫(kù), 注意ORACLE里表名都是大寫(xiě)的.我一般在ORACLE這邊先生成好表結(jié)構(gòu),再選擇SQL SERVER源表往ORACLE目的表里追加數(shù)據(jù).數(shù)據(jù)傳輸速度比方法二慢.
方法二.從SQL Server數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)到ORACLE數(shù)據(jù)庫(kù)可以選擇用Windows下ORACLE9i企業(yè)或者個(gè)人版數(shù)據(jù)庫(kù)做中轉(zhuǎn)。
方法一:選擇需要導(dǎo)出的數(shù)據(jù)庫(kù)右鍵——導(dǎo)出
方法二:(方法一不成功蘆慎時(shí)候的方法)
選擇需缺李要導(dǎo)出的數(shù)據(jù)庫(kù),單擊右鍵——任務(wù)——分離——勾選刪除鏈接和保全……——確陪扮敬定
之后直接去數(shù)據(jù)庫(kù)所在的根目錄復(fù)制粘貼到你想要存放的目錄底下
兩種啟悉方法:一種做出.bak的備份文件,一種直接把數(shù)據(jù)庫(kù)文件拷貝出來(lái)。
方法2:明旁衡分離、附加
步驟:1、鼠標(biāo)右鍵選中要導(dǎo)出的數(shù)據(jù)庫(kù)–》任務(wù)–》分離
、到C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目錄下面拷貝你的數(shù)據(jù)庫(kù)對(duì)應(yīng)的文件.****.mdf,****.log
、要用的時(shí)候直接ManagementStudio–》數(shù)據(jù)庫(kù)–》附加–》找激做到你備份的***.mdf的附加后就可以用了。
關(guān)于sql 跨數(shù)據(jù)庫(kù)導(dǎo)數(shù)據(jù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專(zhuān)注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶(hù)提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)成都老牌IDC服務(wù)商,專(zhuān)注四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,可選線路電信、移動(dòng)、聯(lián)通等。
本文題目:SQL實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入技巧分享(sql跨數(shù)據(jù)庫(kù)導(dǎo)數(shù)據(jù))
新聞來(lái)源:http://fisionsoft.com.cn/article/dhsipih.html


咨詢(xún)
建站咨詢(xún)
