程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL Server數據庫中批量導入數據的四種辦法總結

SQL Server數據庫中批量導入數據的四種辦法總結

編輯:MSSQL

SQL Server數據庫中批量導入數據的四種辦法總結。本站提示廣大學習愛好者:(SQL Server數據庫中批量導入數據的四種辦法總結)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server數據庫中批量導入數據的四種辦法總結正文


在軟件項目實行的時刻,數據導入一向是項目人員比擬頭疼的成績。其實,在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軟件關於處置年夜量記載的時刻,速度比擬慢。若這類方法行欠亨的話,則筆者比擬偏向於采取數據轉換的處置方法。這個操作起來固然比擬龐雜,然則,其可以供給比擬龐雜的驗證,並且可以在圖形化的界面中對數據停止修正,同時效力也比擬高。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved