四種方法在SQL Server資料庫中成批匯入資料
第一:使用Select Into語句
若企業資料庫都採用的是SQL Server資料庫的話,則可以利用Select Into語句來實現資料的匯入。Select Into語句,他的作用就是把資料從另外一個資料庫中查詢出來,然後加入到某個使用者指定的表中。
在使用這條語句的時候,需要注意幾個方面的內容。
一是需要在目的資料庫中先建立相關的表。如想把進銷存系統資料庫(SQLServer)中的產品資訊表(Product)匯入到ERP系統中的產品資訊表(M_Product)中。則前期是在ERP系統的資料庫中已經建立了這張產品資訊表。
二是這種方法只複製表中的資料,而不復製表中的索引。如在進銷存系統資料中的產品資訊表中,在產品編號、產品種類等欄位上建立了索引。則利用Select Into語句把資料複製到ERP系統的表中的時候,只是複製了資料內容的本身,而不會複製索引等資訊。
三是這條語句使用具有侷限性。一般情況下,這隻能夠在SQL Server資料庫中採用。不過,對於SQL Server不同版本的資料庫,如2008或者2003,還都是相容的。若需要匯入的物件資料庫不是SQL Server的,則需要採用其他的方法。
四是採用這條語句的話,在目的表中必須不存在資料。否則的話,目的表中的資料會被清除。也就是說,這個語句不支援表與表資料的合併。在SQL Server中,有一條類似的語句,可以實現這個功能。這條語句就是:Insert Into。他的作用就是把另外一張表中的資料插入到當前表中。若使用者想要的時表與表資料的合併,則可以採用這條語句。兩者不能夠混淆使用,否則的話,很容易導致資料的丟失。
五是以上兩條語句都支援相容的不同型別的資料型別。如在原標中,某個欄位的資料型別是整數型,但是在目的表中這個欄位的資料型別則是浮點型,只要這個兩個資料型別本來就相容的,則在匯入的時候,資料庫是允許的。
第二:利用Excel等中間工具進行控制
雖然第一種方法操作起來比較簡單,但是其也有一些缺點。如他只支援同一種型別的資料庫;不能夠對資料進行過多的干預等等。一般情況下,若使用者原資料準確度比較高,不需要過多的修改就可以直接拿來用的話,則筆者就已採用第一種方式。
但是,若在原資料庫中,資料的準確度不是很高,又或者,有很多資料是報廢的。總之,需要對原資料庫的資料進行整理,才能夠使用的情況,筆者不建議先匯入進去,再進行更改。筆者在遇到這種情況時,喜歡利用Excle作為中間工具。也就是說,先把資料中原資料庫中導到Excle中。有些資料庫,如Oracle資料庫,他不支援Excle格式。但是,我們可以把它導為CSV格式的檔案。這種檔案Excle也可以打得開。
然後,再在Excle中,對記錄進行修改。由於Excle是一個很強的表格處理軟體,所以,其資料修改,要比在資料庫中直接修改來得方便,來得簡單。如可以利用按時間排序等功能,把一些長久不用的記錄清楚掉。也可以利用替換等功能,把一些不規範的字元更改掉。這些原來在資料庫中比較複雜的任務,在Excle等工具中都可以輕鬆的完成。
等到表中的內容修改無誤後,資料庫管理員就可以把Excle表格中的檔案直接匯入到SQL Server資料庫中。由於SQL Server與Excel是同一個父母生的,所以,他們之間的相容性很好。在Sql Server中提供了直接從Excel檔案中匯入資料的工具。
雖然這要藉助中間工具匯入資料,但是,因為其處理起來方便、直觀,所以,筆者在大部分時候都是採用這種方式。
第三:使用資料轉換服務匯入資料
資料轉換服務是SQL Server資料庫中提供的一個非常強大的工具。在SQLServer中,資料轉換功能有一個圖形使用者介面,使用者可以在圖形介面中匯入資料,並對資料進行相應的編輯。
另外,資料轉換服務還支援COM元件的程式設計介面。這也就是說,在前臺應用程式開發的時候,可以直接呼叫資料轉換服務。讓使用者通過前臺應用系統,而不用在後臺資料庫系統進行任何的操作,就可以把資料匯入資料庫系統中去。在前臺對資料庫系統進行匯入,有一個明顯的好處,就可以預先對資料的合法性進行檢查。如可以利用VB等指令碼語言對資料進行檢驗、淨化和一定的轉換,以符合目的資料庫的需要。
如在員工資訊表中的婚姻狀況欄位,在Oracle資料庫系統中,可能是用0或者1來表示婚姻狀況。0表示未婚,1表示已婚。而在SQL Server資料庫中,則利用Y或者N來表示婚姻狀況。Y表示已婚,N表示未婚。在匯入資料的時候,若直接把Oracle資料庫表中的資料匯入到SQL Server資料庫中,因為婚姻狀況這個欄位儲存的內容型別不同,所以,不能夠直接導。遇到這種情況的話,則就可以在匯入資料之前,先利用指令碼語言對資料型別進行驗證。若不符合要求的,則可以通過指令碼語言對資料進行一定的轉換,把0轉換為N,把1轉換為Y等等。
所以,有時候程式設計師在開發前臺應用程式的時候,若要開發資料匯入功能的話,我們都是建議採用這個資料轉換服務。不但有現成的介面,而且,還可以對資料進行驗證與一定程度的轉換。另外,資料轉換服務的資料匯入效率非常的高。即使通過前臺程式呼叫,其效能也比其他方法在同等條件下,要高一個檔次。而且,隨著資料量的增加,資料轉換服務的優勢會越來越明顯。
不過,在前臺應用程式呼叫資料轉換服務的時候,需要注意。資料轉換服務提供的COM介面比較複雜,所以,前臺程式呼叫資料轉換服務的程式碼也比較複雜。若再加上一些指令碼語言的話,可能處理起來更加的繁瑣。故一般只有在大型系統上才會用到這個介面。若資料不多,否則不需要複雜驗證與轉換的話,利用這個介面是大刀小用,得不償失。
第四:異構資料庫之間的匯入匯出
雖然第二種、第三種方式都可以完成異構資料庫之間資料的匯入匯出作業。不過,在SQL Server中,還提供了另外一種解決方案。即直接在SQL Server資料庫中連線到其他型別的資料庫上,然後採用Select Into等語句實現資料的匯入作業。
在SQL Server中,提供了兩個函式可以幫助我們實現對非SQL Server資料庫的連線。這兩個函式分別為Opendatesource與Openrowset。他們的功能基本相同,只是在細節上有所差異。
如Opendatesource這個函式至能夠開啟源資料庫的表和檢視,而不能夠對其進行過濾。若使用者只想把源表中的部分資料匯入到SQL Server資料庫的表中,則不能對源表直接進行過濾。過濾的動作需要在SQL Server資料庫中進行。而Openrowset這個函式,可以在開啟對方資料庫的表或者檢視的時候,直接利用Where等條件限制語句對記錄進新過濾。為此,在實際應用中,還是Openrowset這個函式使用的頻率比較高。
不過由於其需要使用者寫複雜的引數,而且,又不能夠提供複雜的資料驗證功能,所以在實際工作中用的並不是很多。在一些小的應用系統中,偶爾還可以見到其的蹤影。在一些大的成熟的商業軟體中,很少採用這種方式,對資料進行匯入。
有時候,選擇多了,使用者反而不知道如何下手。筆者平時最喜歡採用的是第二種處理方式。他比較直觀,而且,可以對資料進行成批的更改與整理。但是,其缺陷就是效率比較低,特別是Excle軟體對於處理大量記錄的時候,速度比較慢。若這種方式行不通的話,則筆者比較傾向於採用資料轉換的處理方式。這個操作起來雖然比較複雜,但是,其可以提供比較複雜的驗證,而且可以在圖形化的介面中對資料進行修改,同時效率也比較高。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-557479/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 教你兩種資料庫覆蓋式資料匯入方法資料庫
- SQL Server實戰四:查詢資料庫的資料SQLServer資料庫
- SQL資料庫的匯入和匯出SQL資料庫
- 基於Sql server資料庫的四種分頁方式總結SQLServer資料庫
- 資料庫映象 (SQL Server)資料庫SQLServer
- SQL Server資料庫安全SQLServer資料庫
- SQL Server 2014 匯出資料字典SQLServer
- Excel資料匯入Sql Server,部分數字為NullExcelSQLServerNull
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- 將資料庫中資料匯入至solr索引庫資料庫Solr索引
- 從cmd中匯入.SQL檔案並建立資料庫SQL資料庫
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- Sql Server 資料庫學習-常用資料庫 物件SQLServer資料庫物件
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- Blazor使用sql server 資料庫BlazorSQLServer資料庫
- SQL Server資料庫巡檢SQLServer資料庫
- sql server 2005資料庫快照SQLServer資料庫
- SQL Server收縮資料庫SQLServer資料庫
- sql server 資料庫收縮SQLServer資料庫
- SQL Server資料庫遷移SQLServer資料庫
- 管理SQL Server資料庫安全SQLServer資料庫
- 大文字資料,匯入匯出到資料庫資料庫
- 【資料庫學習】資料庫平臺:mysql,sql server資料庫MySqlServer
- 如何將外部資料庫 匯入到系統的SQL中資料庫SQL
- 在登入資料庫的使用!sql資料庫SQL
- SQL SERVER 2012資料庫自動備份的方法SQLServer資料庫
- SQL Server 跨資料庫查詢SQLServer資料庫
- 資料庫映象 (SQL Server)操作模式資料庫SQLServer模式
- 然後再全庫匯入排除view資料庫在impdp匯入View資料庫
- C#快速入門教程(27)—— SQL Server資料庫C#SQLServer資料庫
- SQL Server資料庫建立新使用者及關聯資料庫的方法教程SQLServer資料庫
- Mysql 大資料表 資料匯入到SqlServer 中的方法MySql大資料Server
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- SQL Server資料庫基礎之行資料轉換為列資料SQLServer資料庫
- 還原sql server 2000資料庫的坑,不同版本資料庫SQLServer資料庫
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- SQL server資料庫高可用日誌傳送的方法SQLServer資料庫
- IIS 日誌匯入到資料庫的方法資料庫
- SQL Server資料庫中分頁編號的另一種方式SQLServer資料庫