佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > SQL Server數(shù)據(jù)庫中批量導(dǎo)入數(shù)據(jù)的2種方法

SQL Server數(shù)據(jù)庫中批量導(dǎo)入數(shù)據(jù)的2種方法

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 Linux服務(wù)器 百度競價排名 鐵路電話系統(tǒng) 服務(wù)外包 AI電銷 呼叫中心市場需求

在軟件項目實施的時候,數(shù)據(jù)導(dǎo)入一直是項目人員比較頭疼的問題。其實,在SQL Server中集成了很多成批導(dǎo)入數(shù)據(jù)的方法。有些項目實施顧問頭疼的問題,在我們數(shù)據(jù)庫管理員眼中,是小菜一碟?,F(xiàn)在的重點就是,如何讓用戶了解這些方法,讓數(shù)據(jù)導(dǎo)入變得輕松一些。相信以下方法大家都用過了,溫故而知新哈,如果有更好的方法希望大家都提出來~

一、使用Select Into語句

若企業(yè)數(shù)據(jù)庫都采用的是SQL Server數(shù)據(jù)庫的話,則可以利用Select Into語句來實現(xiàn)數(shù)據(jù)的導(dǎo)入。Select Into語句,他的作用就是把數(shù)據(jù)從另外一個數(shù)據(jù)庫中查詢出來,然后加入到某個用戶指定的表中。

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

1、需要在目的數(shù)據(jù)庫中先建立相關(guān)的表。如想把進(jìn)銷存系統(tǒng)數(shù)據(jù)庫(SQLServer)中的產(chǎn)品信息表(Product)導(dǎo)入到ERP系統(tǒng)中的產(chǎn)品信息表(M_Product)中。則前期是在ERP系統(tǒng)的數(shù)據(jù)庫中已經(jīng)建立了這張產(chǎn)品信息表。

2、這種方法只復(fù)制表中的數(shù)據(jù),而不復(fù)制表中的索引。如在進(jìn)銷存系統(tǒng)數(shù)據(jù)中的產(chǎn)品信息表中,在產(chǎn)品編號、產(chǎn)品種類等字段上建立了索引。則利用Select Into語句把數(shù)據(jù)復(fù)制到ERP系統(tǒng)的表中的時候,只是復(fù)制了數(shù)據(jù)內(nèi)容的本身,而不會復(fù)制索引等信息。

3、這條語句使用具有局限性。一般情況下,這只能夠在SQL Server數(shù)據(jù)庫中采用。不過,對于SQL Server不同版本的數(shù)據(jù)庫,如2008或者2003,還都是兼容的。若需要導(dǎo)入的對象數(shù)據(jù)庫不是SQL Server的,則需要采用其他的方法。

4、采用這條語句的話,在目的表中必須不存在數(shù)據(jù)。否則的話,目的表中的數(shù)據(jù)會被清除。也就是說,這個語句不支持表與表數(shù)據(jù)的合并。在SQL Server中,有一條類似的語句,可以實現(xiàn)這個功能。這條語句就是:Insert Into。他的作用就是把另外一張表中的數(shù)據(jù)插入到當(dāng)前表中。若用戶想要的時表與表數(shù)據(jù)的合并,則可以采用這條語句。兩者不能夠混淆使用,否則的話,很容 易導(dǎo)致數(shù)據(jù)的丟失。

5、以上兩條語句都支持兼容的不同類型的數(shù)據(jù)類型。如在原標(biāo)中,某個字段的數(shù)據(jù)類型是整數(shù)型,但是在目的表中這個字段的數(shù)據(jù)類型則是浮點型,只要這個兩個數(shù)據(jù)類型本來就兼容的,則在導(dǎo)入的時候,數(shù)據(jù)庫是允許的。

另外再補上一個小技巧:

我們想復(fù)制表a的所有字段名到一個新表b的時候,可以使用以下方法:

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

2)select top 0 * into b from a

二、利用Excel等中間工具進(jìn)行控制

雖然第一種方法操作起來比較簡單,但是其也有一些缺點。如他只支持同一種類型的數(shù)據(jù)庫;不能夠?qū)?shù)據(jù)進(jìn)行過多的干預(yù)等等。一般情況下,若用戶原數(shù)據(jù)準(zhǔn)確度比較高,不需要過多的修改就可以直接拿來用的話,則筆者就已采用第一種方式。

但是,若在原數(shù)據(jù)庫中,數(shù)據(jù)的準(zhǔn)確度不是很高,又或者,有很多數(shù)據(jù)是報廢的??傊?,需要對原數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行整理,才能夠使用的情況,我不建議先導(dǎo)入進(jìn)去,再進(jìn)行更改。我在遇到這種情況時,喜歡利用Excle作為中間工具。也就是說,先把數(shù)據(jù)中原數(shù)據(jù)庫中導(dǎo)到Excle中。有些數(shù)據(jù)庫,如 Oracle數(shù)據(jù)庫,他不支持Excle格式。但是,我們可以把它導(dǎo)為CSV格式的文件。這種文件Excle也可以打得開。

然后,再在Excle中,對記錄進(jìn)行修改。由于Excle是一個很強的表格處理軟件,所以,其數(shù)據(jù)修改,要比在數(shù)據(jù)庫中直接修改來得方便,來得簡 單。如可以利用按時間排序等功能,把一些長久不用的記錄清楚掉。也可以利用替換等功能,把一些不規(guī)范的字符更改掉。這些原來在數(shù)據(jù)庫中比較復(fù)雜的任務(wù),在 Excle等工具中都可以輕松的完成。

等到表中的內(nèi)容修改無誤后,數(shù)據(jù)庫管理員就可以把Excle表格中的文件直接導(dǎo)入到SQL Server數(shù)據(jù)庫中。由于SQL Server與Excel是同一個父母生的,所以,他們之間的兼容性很好。在Sql Server中提供了直接從Excel文件中導(dǎo)入數(shù)據(jù)的工具。

雖然這要借助中間工具導(dǎo)入數(shù)據(jù),但是,因為其處理起來方便、直觀,所以,我在大部分時候都是采用這種方式。最后,再附上如何讓Excel表格在數(shù)據(jù)庫中能查看到的相關(guān)代碼:

exec sp_addlinkedserver 'excel','ex','Microsoft.Jet.OLEDB.4.0','C:\Documents and Settings\Administrator\桌面\abc.xls',null,'Excel 5.0' --創(chuàng)建一個名為excel的連接服務(wù),可以查看到abc.xls里面的內(nèi)容

EXEC sp_addlinkedsrvlogin 'excel', 'false', 'sa', 'Admin', NULL --創(chuàng)建一個映射以允許 SQL Server 登錄 sa 使用 Excel 登錄 Admin 連接到 excel,并且沒有密碼

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

select * from excel...Sheet1$ --查看Excel的Sheet1表里面的內(nèi)容

小提示:Excel表格里面的數(shù)據(jù),必須先去除空格,不然有可能由于空格的原因,導(dǎo)致數(shù)據(jù)的不一致。Excel表格的命名,要設(shè)置為abc.xls,并且放在桌面上。打開指定的Excel表格的時候,不能在數(shù)據(jù)庫中查看其數(shù)據(jù),不然數(shù)據(jù)庫會報錯。

有時候,選擇多了,用戶反而不知道如何下手。筆者平時最喜歡采用的是第二種處理方式。它比較直觀,而且,可以對數(shù)據(jù)進(jìn)行成批的更改與整理。但是,其缺陷就是效率比較低,特別是Excle軟件對于處理大量記錄的時候,速度比較慢。

所以在使用的過程中,根據(jù)個人習(xí)慣、喜好選擇自己熟練掌握的進(jìn)行操作,但也要具體問題具體分析。

您可能感興趣的文章:
  • SQL SERVER性能優(yōu)化綜述(很好的總結(jié),不要錯過哦)
  • MySQL日期數(shù)據(jù)類型、時間類型使用總結(jié)
  • SQL Server數(shù)據(jù)庫入門學(xué)習(xí)總結(jié)
  • SQL Server 數(shù)據(jù)庫備份和還原認(rèn)識和總結(jié) (一)
  • Mysql跨表更新 多表update sql語句總結(jié)
  • sqlserver、Mysql、Oracle三種數(shù)據(jù)庫的優(yōu)缺點總結(jié)
  • Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié)
  • SQLite3中自增主鍵相關(guān)知識總結(jié)
  • 重裝MySQL最后一步失敗的完美解決方案(經(jīng)驗總結(jié))
  • 21條MySQL優(yōu)化建議(經(jīng)驗總結(jié))
  • 總結(jié)一周內(nèi)學(xué)習(xí)的Sql經(jīng)驗(一)

標(biāo)簽:蘭州 仙桃 黃山 衡水 崇左 湖南 湘潭 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server數(shù)據(jù)庫中批量導(dǎo)入數(shù)據(jù)的2種方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    呼图壁县| 松滋市| 新乡市| 墨竹工卡县| 宁明县| 潼关县| 西贡区| 敦煌市| 江油市| 齐齐哈尔市| 乌审旗| 永宁县| 东城区| 格尔木市| 姚安县| 安平县| 扎囊县| 滦平县| 万荣县| 临高县| 乐至县| 若羌县| 仙游县| 兰州市| 前郭尔| 新蔡县| 长顺县| 广安市| 恩施市| 汉寿县| 奉化市| 永康市| 永春县| 集安市| 皋兰县| 山西省| 贺州市| 康平县| 灵川县| 五台县| 辽宁省|