假設(shè)要將SQL Server中的Northwind數(shù)據(jù)庫(kù)中的Products表導(dǎo)出到Oracle的Scott用戶 首先需要有安裝SQL Server企業(yè)版 1.打開(kāi)工具: 開(kāi)始-程序- 導(dǎo)入和SQL Server數(shù)據(jù)導(dǎo)出數(shù)據(jù) 2.下一步,選擇數(shù)據(jù)源 [數(shù)據(jù)源]選擇“用于SQL Server的Microsoft OLE DB提供程序”,這應(yīng)該是缺省值。 [服務(wù)器]選擇要導(dǎo)出數(shù)據(jù)的服務(wù)器,如果是本機(jī),選擇(local) [數(shù)據(jù)庫(kù)]選擇要導(dǎo)出的數(shù)據(jù)所在的庫(kù),這里選擇Northwind 3.下一步,選擇目的 [目的]選擇Microsoft ODBC for Oracle [DSN]選擇用戶/系統(tǒng)DSN一項(xiàng),然后在下拉列表框中找一個(gè)已經(jīng)連接到了Scott用戶的DSN名稱。 如果下拉列表中沒(méi)有,點(diǎn)下拉列表框右側(cè)的[新建],出現(xiàn)創(chuàng)建新數(shù)據(jù)源界面。 接下來(lái)選擇系統(tǒng)數(shù)據(jù)源,下一步,在驅(qū)動(dòng)程序列表中選擇Microsoft ODBC for Oracle 下一步,完成,出現(xiàn)Microsoft ODBC for Oracle安裝界面 [數(shù)據(jù)源名稱]隨便輸入,比如sss [說(shuō)明]可以不填 [用戶名稱]填入要SQL Server數(shù)據(jù)導(dǎo)出到的Oracle用戶名稱,這里是scott [服務(wù)器]填入要連接到Oracle服務(wù)器所使用的服務(wù)名,比方說(shuō)使用sqlplus scott/tiger@server1可以連接到數(shù)據(jù)庫(kù),那么這里就填入server1。如果本機(jī)就是服務(wù)器,使用sqlplus scott/tiger即可連接到數(shù)據(jù)庫(kù),這里空著不填即可。 這樣就創(chuàng)建好了一個(gè)數(shù)據(jù)源sss,保證下拉列表框中選擇了sss一項(xiàng)。 [用戶名]填入SQL Server數(shù)據(jù)導(dǎo)出到的Oracle用戶名稱,這里是scott [密碼]填入SQL Server數(shù)據(jù)導(dǎo)出到的Oracle用戶使用的密碼,這里是tiger 4.下一步,指定表復(fù)制或查詢 如果要導(dǎo)出的內(nèi)容是整個(gè)表,選擇[從源數(shù)據(jù)庫(kù)復(fù)制表和視圖] 如果要導(dǎo)出的內(nèi)容是表的一部分列,行,可以選擇[用一條查詢指定要傳輸?shù)臄?shù)據(jù)],這時(shí)需要寫出一個(gè)查詢語(yǔ)句 這里選擇第一項(xiàng)[從源數(shù)據(jù)庫(kù)復(fù)制表和視圖] 5.下一步,選擇源表和視圖 點(diǎn)中要導(dǎo)出的表Products一行的復(fù)選框,目的、轉(zhuǎn)換兩欄就會(huì)出現(xiàn)內(nèi)容。 目的可以用來(lái)選擇表名。轉(zhuǎn)換可以用來(lái)修改列的數(shù)據(jù)類型或是整個(gè)建表的SQL語(yǔ)句 6.下一步,保存、調(diào)度和復(fù)制包 選中立即運(yùn)行 7.下一步,正在完成DTS導(dǎo)入/導(dǎo)出向?qū)?8.完成 提示“成功地將n個(gè)表從Microsoft SQLServer復(fù)制到了Oracle” 9.完成,關(guān)閉導(dǎo)入導(dǎo)出程序 注意:因?yàn)閛racle的表名都是大寫的,而SQL的表可能是大小混寫的,所以導(dǎo)入后在oracle里查不到該表,比如這個(gè)Products表在oracle里查詢就應(yīng)該寫成select * from scott."Products";為了方便查詢可以通過(guò)批量修改表名為大寫以便后面導(dǎo)數(shù)據(jù)的工作。
創(chuàng)新互聯(lián)建站是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),網(wǎng)頁(yè)空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,成都服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
--用DTS移植數(shù)據(jù)
--數(shù)據(jù)轉(zhuǎn)換服務(wù)(Data Transformation Services,簡(jiǎn)稱DTS),它可以在任意數(shù)據(jù)源之間移動(dòng)數(shù)據(jù),并在移動(dòng)過(guò)程中對(duì)數(shù)據(jù)進(jìn)行清洗
--DTS通常用于將數(shù)據(jù)移動(dòng)到SQL Server,但實(shí)際上它可以方便地在幾乎所有的數(shù)據(jù)源之間移動(dòng)數(shù)據(jù)
--注意:“復(fù)制數(shù)據(jù)庫(kù)向?qū)А焙汀皩?dǎo)入/導(dǎo)出向?qū)А睂?shí)際只是創(chuàng)建和執(zhí)行了DTS包
--DTS設(shè)計(jì)器
--“數(shù)據(jù)轉(zhuǎn)換服務(wù)”-“本地包”-新建或打開(kāi)包
--“連接”:可用的連接對(duì)象
--“任務(wù)”:包含了19個(gè)關(guān)鍵的數(shù)據(jù)轉(zhuǎn)換任務(wù),其中最常見(jiàn)的是“轉(zhuǎn)換數(shù)據(jù)任務(wù)”和“執(zhí)行SQL任務(wù)”
--“包屬性”:在DTS的設(shè)計(jì)器中選擇“包”-“屬性”或右鍵“包屬性”,可以打開(kāi)包屬性對(duì)話框
--添加“連接”
--添加“任務(wù)”
--1、源:源可以是源連接中的一個(gè)表、視圖,或者一個(gè)SQL查詢
--2、目的:接收數(shù)據(jù)的表
--3、轉(zhuǎn)換:對(duì)源數(shù)據(jù)列和目的數(shù)據(jù)列進(jìn)行匹配或者連接。一個(gè)列轉(zhuǎn)換可以是下列情形之一:
--復(fù)制列是轉(zhuǎn)換中最常見(jiàn)的情況
--日期時(shí)間字符串、小寫字符串、字串、裁剪字符串和大寫串的處理全都與復(fù)制列轉(zhuǎn)換類似,不同的是
--它們中的每一個(gè)都增加了某種類型的數(shù)據(jù)轉(zhuǎn)換功能
--讀文件和寫文件分別用于將數(shù)據(jù)導(dǎo)入或者導(dǎo)出到源列中所指定的文件
--對(duì)于包含有邏輯或者數(shù)據(jù)查找的復(fù)雜轉(zhuǎn)換,需要使用ActiveX腳本實(shí)現(xiàn)
--4、查找:僅僅把數(shù)據(jù)從一個(gè)表移動(dòng)到另外一個(gè)表是一項(xiàng)很簡(jiǎn)單的任務(wù)。但在很多情況下我們都必須在轉(zhuǎn)換的過(guò)程中對(duì)數(shù)據(jù)進(jìn)行修改
--轉(zhuǎn)換任務(wù)可以調(diào)用查找腳本找出需要的值來(lái)替換源數(shù)據(jù)集中的值
--a、定義一個(gè)查找,“名稱”:需要替換的源數(shù)據(jù)中的列名;“連接”:目的驅(qū)動(dòng);“高速緩存”:設(shè)置DTS執(zhí)行時(shí)可以緩存的查詢結(jié)果數(shù)量
--b、“查詢”:可以打開(kāi)查詢?cè)O(shè)計(jì)器的一個(gè)變種,通過(guò)它可以為任意的連接定義有效的查詢。該查詢應(yīng)當(dāng)以源列表中的值為輸入(參數(shù)),
--并返回相應(yīng)的替代它的值以便插入目的表。輸入的參數(shù)用‘?’來(lái)表示,而select語(yǔ)句所返回的值就是用于在目的表中替代輸入?yún)?shù)的值
--下面的例子從源列中讀出顧客類型的名字,并用查詢所返回的CustomerTypeID來(lái)替代它
select customertypeid from customertype where (name = ?)
--為什么要這樣做呢?源表中的customertype列為字符,而目的表中的customertypeid為整型,所以需要根據(jù)源表中的customertype(字符)
--從表customertype中得到相應(yīng)的customertypeid以便插入到目的表的customertypeid(整數(shù))中
--c、Active轉(zhuǎn)換?
/*'**********************************************************************
' Visual Basic Transformation Script
'************************************************************************
' Copy each source column to the destination column
Function Main()
DTSDestination("CustomerTypeID") = DTSLookups("CustomerType").Execute(DTSSource("CustomerType"))
Main = DTSTransformStat_OK
End Function
*/
--5、轉(zhuǎn)換選項(xiàng):
--工作流控制
--DTS只包含幾個(gè)任務(wù)的情況在實(shí)際中是很少見(jiàn)的。絕大多數(shù)DTS包都要執(zhí)行數(shù)十個(gè)任務(wù),而這些任務(wù)之間又具有錯(cuò)綜復(fù)雜的關(guān)系。因此,執(zhí)行
--順序?qū)τ诜乐瑰e(cuò)誤的發(fā)生至關(guān)重要。
--DTS通過(guò)以下選項(xiàng)來(lái)控制工作流的執(zhí)行順序:完成時(shí)(藍(lán)色);成功時(shí)(綠色);失敗時(shí)(紅色)
--如:添加任務(wù)“執(zhí)行SQL任務(wù)”(用來(lái)執(zhí)行SQL語(yǔ)句),以在執(zhí)行其他任務(wù)之前刪除表中的數(shù)據(jù)。則此任務(wù)為第一個(gè)執(zhí)行。選中此任務(wù)和第二個(gè)
--任務(wù),然后從“工作流”中選擇需要工作流類型(如完成),就可以設(shè)定這兩個(gè)任務(wù)之間的執(zhí)行順序。執(zhí)行好之后作用:先執(zhí)行第一個(gè)任務(wù),
--完成后,再執(zhí)行第二個(gè)任務(wù)。。
--如果要為轉(zhuǎn)換數(shù)據(jù)任務(wù)設(shè)置工作流,可以選擇該轉(zhuǎn)換任務(wù)的源連接,右鍵-“工作流屬性”-設(shè)置工作流
--執(zhí)行DTS包
--存儲(chǔ)和移動(dòng)DTS包
--1、“包”-“保存”:保存到本地服務(wù)器上。展開(kāi)企業(yè)管理器控制臺(tái)樹(shù)的“數(shù)據(jù)轉(zhuǎn)換服務(wù)”-“本地包”,將會(huì)看到那些保存的包
--2、“包”-“另存為”:提供了其他幾種可選的存儲(chǔ)格式和選項(xiàng)
--SQL Server:這種方法將包保存在任何已注冊(cè)的SQL Server的MSDB數(shù)據(jù)庫(kù)的sysdtspackages表中。如果已經(jīng)注冊(cè)了相應(yīng)的服務(wù)器,
--這將是最簡(jiǎn)單的把包移動(dòng)到另外一個(gè)SQL Server上的辦法。如果要把包移動(dòng)到還沒(méi)有注冊(cè)的服務(wù)器上,應(yīng)使用“結(jié)構(gòu)花存儲(chǔ)文件”選項(xiàng)
--Meta Data Services:這種高級(jí)的方法可以跟蹤已經(jīng)為DTS修改的數(shù)據(jù)
--結(jié)構(gòu)化存儲(chǔ)文件:這種方法能夠創(chuàng)建可以復(fù)制到另外一個(gè)SQL Server,并且可以在另外一臺(tái)服務(wù)器上打開(kāi)的文件。一定要注意SQL Server
--和service pack的版本號(hào),因?yàn)榫哂胁煌膕ervice pack級(jí)別的SQL Server 2000實(shí)例所使用的結(jié)構(gòu)化存儲(chǔ)文件有可能是不兼容的
--要打開(kāi)用結(jié)構(gòu)化存儲(chǔ)文件格式保存的包,可以在企業(yè)管理器控制臺(tái)樹(shù)的數(shù)據(jù)轉(zhuǎn)服務(wù)節(jié)點(diǎn)的快捷方式菜單中選擇“打開(kāi)包”菜單命令
--Visual Basic文件:這個(gè)選項(xiàng)可以生成與SQL Server DTS包完成同樣任務(wù)的VB腳本
--注意:如果已經(jīng)使用“包”-“另存為”命令保存了包,“包”-“保存”命令將用上一個(gè)“另存為”命令所選擇的位置和格式來(lái)保存這個(gè)包
--增量和版本
--數(shù)據(jù)轉(zhuǎn)換服務(wù)還有一個(gè)很好的特性:它能夠?qū)Π淖兓M(jìn)行管理。包的每次保存都會(huì)產(chǎn)生該包的一個(gè)新版本,最終就會(huì)形成該包的多個(gè)連續(xù)的版本
--如果要查看任意包所保存的各個(gè)版本,可以在企業(yè)管理器中,從本地包清單中選擇一個(gè)DTS包,然后選擇“操作”-“版本”菜單命令,或者從
--該包的快捷方式菜單中選擇“版本”菜單。此時(shí)將會(huì)打開(kāi)“DTS包版本”對(duì)話框,并顯示該包的各個(gè)版本的日期和描述
--使用“DTS包版本”對(duì)話框,可以打開(kāi)以前的版本進(jìn)行編輯或者對(duì)它們進(jìn)行清理。如果想恢復(fù)到某個(gè)以前的版本,可以打開(kāi)該版本進(jìn)行編輯,然后】
--使用“包”-“另存為”菜單命令以一個(gè)新名字保存該包
--用dts移植數(shù)據(jù)
--數(shù)據(jù)轉(zhuǎn)換服務(wù)(Data Transformation Services,簡(jiǎn)稱dts),它可以在任意數(shù)據(jù)源之間移動(dòng)數(shù)據(jù),并在移動(dòng)過(guò)程中對(duì)數(shù)據(jù)進(jìn)行清洗
--dts通常用于將數(shù)據(jù)移動(dòng)到sql Server,但實(shí)際上它可以方便地在幾乎所有的數(shù)據(jù)源之間移動(dòng)數(shù)據(jù)
--注意:“復(fù)制數(shù)據(jù)庫(kù)向?qū)А焙汀皩?dǎo)入/導(dǎo)出向?qū)А睂?shí)際只是創(chuàng)建和執(zhí)行了dts包
--dts設(shè)計(jì)器
--“數(shù)據(jù)轉(zhuǎn)換服務(wù)”-“本地包”-新建或打開(kāi)包
--“連接”:可用的連接對(duì)象
--“任務(wù)”:包含了19個(gè)關(guān)鍵的數(shù)據(jù)轉(zhuǎn)換任務(wù),其中最常見(jiàn)的是“轉(zhuǎn)換數(shù)據(jù)任務(wù)”和“執(zhí)行sql任務(wù)”
--“包屬性”:在dts的設(shè)計(jì)器中選擇“包”-“屬性”或右鍵“包屬性”,可以打開(kāi)包屬性對(duì)話框
--添加“連接”
--添加“任務(wù)”
--1、源:源可以是源連接中的一個(gè)表、視圖,或者一個(gè)sql查詢
--2、目的:接收數(shù)據(jù)的表
--3、轉(zhuǎn)換:對(duì)源數(shù)據(jù)列和目的數(shù)據(jù)列進(jìn)行匹配或者連接。一個(gè)列轉(zhuǎn)換可以是下列情形之一:
--復(fù)制列是轉(zhuǎn)換中最常見(jiàn)的情況
--日期時(shí)間字符串、小寫字符串、字串、裁剪字符串和大寫串的處理全都與復(fù)制列轉(zhuǎn)換類似,不同的是
--它們中的每一個(gè)都增加了某種類型的數(shù)據(jù)轉(zhuǎn)換功能
--讀文件和寫文件分別用于將數(shù)據(jù)導(dǎo)入或者導(dǎo)出到源列中所指定的文件
--對(duì)于包含有邏輯或者數(shù)據(jù)查找的復(fù)雜轉(zhuǎn)換,需要使用ActiveX腳本實(shí)現(xiàn)
--4、查找:僅僅把數(shù)據(jù)從一個(gè)表移動(dòng)到另外一個(gè)表是一項(xiàng)很簡(jiǎn)單的任務(wù)。但在很多情況下我們都必須在轉(zhuǎn)換的過(guò)程中對(duì)數(shù)據(jù)進(jìn)行修改
--轉(zhuǎn)換任務(wù)可以調(diào)用查找腳本找出需要的值來(lái)替換源數(shù)據(jù)集中的值
--a、定義一個(gè)查找,“名稱”:需要替換的源數(shù)據(jù)中的列名;“連接”:目的驅(qū)動(dòng);“高速緩存”:設(shè)置dts執(zhí)行時(shí)可以緩存的查詢結(jié)果數(shù)量
--b、“查詢”:可以打開(kāi)查詢?cè)O(shè)計(jì)器的一個(gè)變種,通過(guò)它可以為任意的連接定義有效的查詢。該查詢應(yīng)當(dāng)以源列表中的值為輸入(參數(shù)),
--并返回相應(yīng)的替代它的值以便插入目的表。輸入的參數(shù)用‘?’來(lái)表示,而select語(yǔ)句所返回的值就是用于在目的表中替代輸入?yún)?shù)的值
--下面的例子從源列中讀出顧客類型的名字,并用查詢所返回的CustomerTypeID來(lái)替代它
select customertypeid from customertype where (name = ?)
--為什么要這樣做呢?源表中的customertype列為字符,而目的表中的customertypeid為整型,所以需要根據(jù)源表中的customertype(字符)
--從表customertype中得到相應(yīng)的customertypeid以便插入到目的表的customertypeid(整數(shù))中
--c、Active轉(zhuǎn)換?
/*'**********************************************************************
' Visual Basic Transformation Script
'************************************************************************
' Copy each source column to the destination column
Function Main()
dtsDestination("CustomerTypeID") = dtsLookups("CustomerType").Execute(dtsSource("CustomerType"))
Main = dtsTransformStat_OK
end Function
*/
--5、轉(zhuǎn)換選項(xiàng):
--工作流控制
--dts只包含幾個(gè)任務(wù)的情況在實(shí)際中是很少見(jiàn)的。絕大多數(shù)dts包都要執(zhí)行數(shù)十個(gè)任務(wù),而這些任務(wù)之間又具有錯(cuò)綜復(fù)雜的關(guān)系。因此,執(zhí)行
--順序?qū)τ诜乐瑰e(cuò)誤的發(fā)生至關(guān)重要。
--dts通過(guò)以下選項(xiàng)來(lái)控制工作流的執(zhí)行順序:完成時(shí)(藍(lán)色);成功時(shí)(綠色);失敗時(shí)(紅色)
--如:添加任務(wù)“執(zhí)行sql任務(wù)”(用來(lái)執(zhí)行sql語(yǔ)句),以在執(zhí)行其他任務(wù)之前刪除表中的數(shù)據(jù)。則此任務(wù)為第一個(gè)執(zhí)行。選中此任務(wù)和第二個(gè)
--任務(wù),然后從“工作流”中選擇需要工作流類型(如完成),就可以設(shè)定這兩個(gè)任務(wù)之間的執(zhí)行順序。執(zhí)行好之后作用:先執(zhí)行第一個(gè)任務(wù),
--完成后,再執(zhí)行第二個(gè)任務(wù)。。
--如果要為轉(zhuǎn)換數(shù)據(jù)任務(wù)設(shè)置工作流,可以選擇該轉(zhuǎn)換任務(wù)的源連接,右鍵-“工作流屬性”-設(shè)置工作流
--執(zhí)行dts包
--存儲(chǔ)和移動(dòng)dts包
--1、“包”-“保存”:保存到本地服務(wù)器上。展開(kāi)企業(yè)管理器控制臺(tái)樹(shù)的“數(shù)據(jù)轉(zhuǎn)換服務(wù)”-“本地包”,將會(huì)看到那些保存的包
--2、“包”-“另存為”:提供了其他幾種可選的存儲(chǔ)格式和選項(xiàng)
--sql Server:這種方法將包保存在任何已注冊(cè)的sql Server的MSDB數(shù)據(jù)庫(kù)的sysdtspackages表中。如果已經(jīng)注冊(cè)了相應(yīng)的服務(wù)器,
--這將是最簡(jiǎn)單的把包移動(dòng)到另外一個(gè)sql Server上的辦法。如果要把包移動(dòng)到還沒(méi)有注冊(cè)的服務(wù)器上,應(yīng)使用“結(jié)構(gòu)花存儲(chǔ)文件”選項(xiàng)
--Meta Data Services:這種高級(jí)的方法可以跟蹤已經(jīng)為DTS修改的數(shù)據(jù)
--結(jié)構(gòu)化存儲(chǔ)文件:這種方法能夠創(chuàng)建可以復(fù)制到另外一個(gè)sql Server,并且可以在另外一臺(tái)服務(wù)器上打開(kāi)的文件。一定要注意sql Server
--和service pack的版本號(hào),因?yàn)榫哂胁煌膕ervice pack級(jí)別的SQL Server 2000實(shí)例所使用的結(jié)構(gòu)化存儲(chǔ)文件有可能是不兼容的
--要打開(kāi)用結(jié)構(gòu)化存儲(chǔ)文件格式保存的包,可以在企業(yè)管理器控制臺(tái)樹(shù)的數(shù)據(jù)轉(zhuǎn)服務(wù)節(jié)點(diǎn)的快捷方式菜單中選擇“打開(kāi)包”菜單命令
--Visual Basic文件:這個(gè)選項(xiàng)可以生成與SQL Server DTS包完成同樣任務(wù)的vb腳本
--注意:如果已經(jīng)使用“包”-“另存為”命令保存了包,“包”-“保存”命令將用上一個(gè)“另存為”命令所選擇的位置和格式來(lái)保存這個(gè)包
--增量和版本
--數(shù)據(jù)轉(zhuǎn)換服務(wù)還有一個(gè)很好的特性:它能夠?qū)Π淖兓M(jìn)行管理。包的每次保存都會(huì)產(chǎn)生該包的一個(gè)新版本,最終就會(huì)形成該包的多個(gè)連續(xù)的版本
--如果要查看任意包所保存的各個(gè)版本,可以在企業(yè)管理器中,從本地包清單中選擇一個(gè)DTS包,然后選擇“操作”-“版本”菜單命令,或者從
--該包的快捷方式菜單中選擇“版本”菜單。此時(shí)將會(huì)打開(kāi)“DTS包版本”對(duì)話框,并顯示該包的各個(gè)版本的日期和描述
--使用“DTS包版本”對(duì)話框,可以打開(kāi)以前的版本進(jìn)行編輯或者對(duì)它們進(jìn)行清理。如果想恢復(fù)到某個(gè)以前的版本,可以打開(kāi)該版本進(jìn)行編輯,然后】
--使用“包”-“另存為”菜單命令以一個(gè)新名字保存該包
分享標(biāo)題:sqlserver裁剪,sql裁剪字符串
本文地址:http://chinadenli.net/article28/dsicccp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、小程序開(kāi)發(fā)、全網(wǎng)營(yíng)銷推廣、標(biāo)簽優(yōu)化、建站公司、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)