SQL Server資料庫中大量匯入資料

來源:互聯網
上載者:User

在軟體項目實施的時候,資料匯入一直是項目人員比較頭疼的問題。其實,在SQL Server中整合了很多成批匯入資料的方法。有些項目實施顧問頭疼的問題,在我們資料庫管理員眼中,是小菜一碟。現在的重點就是,如何讓使用者瞭解這些方法,讓資料匯入變得輕鬆一些。相信以下方法大家都用過了,溫故而知新哈,如果有更好的方法希望大家都提出來~

一、使用Select Into語句

若企業資料庫都採用的是SQL Server資料庫的話,則可以利用Select Into語句來實現資料的匯入。Select Into語句,他的作用就是把資料從另外一個資料庫中查詢出來,然後加入到某個使用者指定的表中。

在使用這條語句的時候,需要注意幾個方面的內容。

1、需要在目的資料庫中先建立相關的表。如想把進銷存系統資料庫(SQLServer)中的產品資訊表(Product)匯入到ERP系統中的產品資訊表(M_Product)中。則前期是在ERP系統的資料庫中已經建立了這張產品資訊表。

2、這種方法只複製表中的資料,而不複製表中的索引。如在進銷存系統資料中的產品資訊表中,在產品編號、產品種類等欄位上建立了索引。則利用Select Into語句把資料複製到ERP系統的表中的時候,只是複製了資料內容的本身,而不會複製索引等資訊。

3、這條語句使用具有局限性。一般情況下,這隻能夠在SQL Server資料庫中採用。不過,對於SQL Server不同版本的資料庫,如2008或者2003,還都是相容的。若需要匯入的對象資料庫不是SQL Server的,則需要採用其他的方法。

4、採用這條語句的話,在目的表中必須不存在資料。否則的話,目的表中的資料會被清除。也就是說,這個語句不支援表與表資料的合并。在SQL Server中,有一條類似的語句,可以實現這個功能。這條語句就是:Insert Into。他的作用就是把另外一張表中的資料插入到當前表中。若使用者想要的時表與表資料的合并,則可以採用這條語句。兩者不能夠混淆使用,否則的話,很容 易導致資料的丟失。

5、以上兩條語句都支援相容的不同類型的資料類型。如在原標中,某個欄位的資料類型是整數型,但是在目的表中這個欄位的資料類型則是浮點型,只要這個兩個資料類型本來就相容的,則在匯入的時候,資料庫是允許的。

另外再補上一個小技巧:

我們想複製表a的所有欄位名到一個新表b的時候,可以使用以下方法:

1)select * into b from a where 1<>1 (僅SQL Server可用)

2)select top 0 * into b from a

二、利用Excel等中間工具進行控制

雖然第一種方法操作起來比較簡單,但是其也有一些缺點。如他只支援同一種類型的資料庫;不能夠對資料進行過多的幹預等等。一般情況下,若使用者原資料準確度比較高,不需要過多的修改就可以直接拿來用的話,則筆者就已採用第一種方式。

但是,若在原資料庫中,資料的準確度不是很高,又或者,有很多資料是報廢的。總之,需要對原資料庫的資料進行整理,才能夠使用的情況,我不建議先匯入進去,再變更。我在遇到這種情況時,喜歡利用Excle作為中間工具。也就是說,先把資料中原資料庫中導到Excle中。有些資料庫,如 Oracle資料庫,他不支援Excle格式。但是,我們可以把它導為CSV格式的檔案。這種檔案Excle也可以打得開。

然後,再在Excle中,對記錄進行修改。由於Excle是一個很強的表格處理軟體,所以,其資料修改,要比在資料庫中直接修改來得方便,來得簡 單。如可以利用按時間排序等功能,把一些長久不用的記錄清楚掉。也可以利用替換等功能,把一些不規範的字元更改掉。這些原來在資料庫中比較複雜的任務,在 Excle等工具中都可以輕鬆的完成。

等到表中的內容修改無誤後,資料庫管理員就可以把Excle表格中的檔案直接匯入到SQL Server資料庫中。由於SQL Server與Excel是同一個父母生的,所以,他們之間的相容性很好。在Sql Server中提供了直接從Excel檔案中匯入資料的工具。

雖然這要藉助中間工具匯入資料,但是,因為其處理起來方便、直觀,所以,我在大部分時候都是採用這種方式。最後,再附上如何讓Excel表格在資料庫中能查看到的相關代碼:

exec sp_addlinkedserver 'excel','ex','Microsoft.Jet.OLEDB.4.0','C:\Documents and Settings\Administrator\案頭\abc.xls',null,'Excel 5.0'  --建立一個名為excel的串連服務,可以查看到abc.xls裡面的內容

EXEC sp_addlinkedsrvlogin 'excel', 'false', 'sa', 'Admin', NULL --建立一個映射以允許 SQL Server 登入 sa 使用 Excel 登入 Admin 串連到 excel,並且沒有密碼

--exec sp_dropserver 'excel' --刪除串連


select * from excel...Sheet1$ --查看Excel的Sheet1表裡面的內容

小提示:Excel表格裡面的資料,必須先去除空格,不然有可能由於空格的原因,導致資料的不一致。Excel表格的命名,要設定為abc.xls,並且放在案頭上。開啟指定的Excel表格的時候,不能在資料庫中查看其資料,不然資料庫會報錯。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.