⑴ sqlserver如何導入excel數據
使用OpenRowSet操作Excel x0dx0a有兩種介面可供選擇:Microsoft.Jet.OLEDB.4.0(以下簡稱 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下簡稱 ACE 引擎)。x0dx0ax0dx0aJet 引擎大家都很熟悉,可以訪問 Office 97-2003,但不能訪問 Office 2007。x0dx0ax0dx0aACE 引擎是隨 Office 2007 一起發布的資料庫連接組件,既可以訪問 Office 2007,也可以訪問 Office 97-2003。x0dx0ax0dx0a另外:Microsoft.ACE.OLEDB.12.0 可以訪問正在打開的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。x0dx0ax0dx0a語法舉例: x0dx0ax0dx0a--> Jet 引擎訪問 Excel 97-2003 x0dx0ax0dx0aselect * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]') x0dx0aselect * from OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$]) x0dx0aselect * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$] x0dx0aselect * from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"')...[Sheet1$] x0dx0ax0dx0a--> ACE 引擎訪問 Excel 97-2003 x0dx0ax0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', 'select * from [Sheet1$]') x0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls', [Sheet1$]) x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\97-2003.xls')...[Sheet1$] x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\97-2003.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$] x0dx0a x0dx0a--> ACE 引擎訪問 Excel 2007 x0dx0ax0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', 'select * from [Sheet1$]') x0dx0aselect * from OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx', [Sheet1$]) x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=D:\2007.xlsx')...[Sheet1$] x0dx0aselect * from OpenDataSource('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"')...[Sheet1$] x0dx0a註:x0dx0ax0dx0aExcel 2007 工作簿文件的擴展名是:xlsxx0dx0ax0dx0aHDR=Yes/Nox0dx0ax0dx0a可選參數,指定 Excel 表的第一行是否列名,預設為 Yes,可以在注冊表中修改預設的行為。x0dx0ax0dx0aIMEX=1x0dx0ax0dx0a可選參數,將 Excel 表中混合 Intermixed 數據類型的列強制解析為文本。
⑵ sqlserver怎麼導入excel文件
首先進入到SQLServer數據,右擊需要導入的目標資料庫,再點擊任務,再點擊導入數據。
⑶ 在SQLServer成批導入數據
在軟體項目實施的時候 數據導入一直是項目人員比較頭疼的問題 其實 在SQL Server中集成了很多成批導入數據的方法 有些項目實施顧問頭疼的問題 在我們資料庫管理員眼中 是小菜一碟 現在的重點就是 如何讓用戶了解這些方法 讓數據導入變得輕松一些
第一種方法 使用Select Into語句
若企業資料庫都採用的是SQL Server資料庫的話 則可以利用Select Into語句來實現數據的導入 Select Into語句 他的作用就是把數據從另外一個資料庫中查詢出來 然後加入到某個用戶指定的表中
在使用這條語句的時候 需要注意幾個方面的內容
一是需要在目的資料庫中先建立相關的表 如想把進銷存系統資料庫(SQLServer)中的產品信息表(Proct)導入到ERP系統中的產品信息表(M_Proct)中 則前期是在ERP系統的資料庫中已經建立了這張產品信息表
二是這種方法只復製表中的數據 而不復製表中的索引 如在進銷存系統數據中的產品信息表中 在產品編號 產品種類等欄位上建立了索引 則利用Select Into語句把數據復制到ERP系統的表中的時候 只是復制了數據內容的本身 而不會復制索引等信息
三是這條語句使用具有局限性 一般情況下 這只能夠在SQL Server資料庫中採用 不過 對於SQL Server不同版本的資料庫 如 或者 還都是兼容的 若需要導入的對象資料庫不是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中 數據轉換功能有一個圖形用戶介面 用戶可以在圖形界面中導入數據 並對數據進行相應的編輯
另外 數據轉換服務還支持組件的編程介面 這也就是說 在前台應用程序開發的時候 可以直接調用數據轉換服務 讓用戶通過前台應用系統 而不用在後台資料庫系統進行任何的操作 就可以把數據導入資料庫系統中去 在前台對資料庫系統進行導入 有一個明顯的好處 就可以預先對數據的合法性進行檢查 如可以利用VB等腳本語言對數據進行檢驗 凈化和一定的轉換 以符合目的資料庫的需要
如在員工信息表中的婚姻狀況欄位 在Oracle資料庫系統中 可能是用 或者 來表示婚姻狀況 表示未婚 表示已婚 而在SQL Server資料庫中 則利用Y或者N來表示婚姻狀況 Y表示已婚 N表示未婚 在導入數據的時候 若直接把Oracle資料庫表中的數據導入到SQL Server資料庫中 因為婚姻狀況這個欄位存儲的內容類型不同 所以 不能夠直接導 遇到這種情況的話 則就可以在導入數據之前 先利用腳本語言對數據類型進行驗證 若不符合要求的 則可以通過腳本語言對數據進行一定的轉換 把 轉換為N 把 轉換為Y等等
所以 有時候程序員在開發前台應用程序的時候 若要開發數據導入功能的話 我們都是建議採用這個數據轉換服務 不但有現成的介面 而且 還可以對數據進行驗證與一定程度的轉換 另外 數據轉換服務的數據導入效率非常的高 即使通過前台程序調用 其性能也比其他方法在同等條件下 要高一個檔次 而且 隨著數據量的增加 數據轉換服務的優勢會越來越明顯
不過 在前台應用程序調用數據轉換服務的時候 需要注意 數據轉換服務提供的介面比較復雜 所以 前台程序調用數據轉換服務的代碼也比較復雜 若再加上一些腳本語言的話 可能處理起來更加的繁瑣 故一般只有在大型系統上才會用到這個介面 若數據不多 否則不需要復雜驗證與轉換的話 利用這個介面是大刀小用 得不償失
第四種方式 異構資料庫之間的導入導出
雖然第二種 第三種方式都可以完成異構資料庫之間數據的導入導出作業 不過 在SQL Server中 還提供了另外一種解決方案 即直接在SQL Server資料庫中連接到其他類型的資料庫上 然後採用Select Into等語句實現數據的導入作業
在SQL Server中 提供了兩個函數可以幫助我們實現對非SQL Server資料庫的連接 這兩個函數分別為Opendatesource與Openrowset 他們的功能基本相同 只是在細節上有所差異
如Opendatesource這個函數至能夠打開源資料庫的表和視圖 而不能夠對其進行過濾 若用戶只想把源表中的部分數據導入到SQL Server資料庫的表中 則不能對源表直接進行過濾 過濾的動作需要在SQL Server資料庫中進行 而Openrowset這個函數 可以在打開對方資料庫的表或者視圖的時候 直接利用Where等條件限制語句對記錄進新過濾 為此 在實際應用中 還是Openrowset這個函數使用的頻率比較高
不過由於其需要用戶寫復雜的參數 而且 又不能夠提供復雜的數據驗證功能 所以在實際工作中用的並不是很多 在一些小的應用系統中 偶爾還可以見到其的蹤影 在一些大的成熟的商業軟體中 很少採用這種方式 對數據進行導入
lishixin/Article/program/SQLServer/201311/22189
⑷ 如何實現SQLServer導入數據
如果需要向SQL Server批量導入數據,根據導入的選項和表中的索引設置,數據導入的時間可能會在不同情況下相差甚遠。如何能夠把批量導入的過程盡量少花時間呢?在這里我們將會介紹幾種不同的批量導入數據的方法、各種方法相應的實例及其所需的時間長短。
在我們的測試中我們採取了六種不同的數據導入方法:
1、表含有一個聚集索引(clustered index)和兩個非聚集索引(non-clustered index)
2、表只含有一個聚集索引
3、表不含有任何索引
4、表不含有任何索引並且有TABLOCK指示
5、表只含有一個聚集索引並且有TABLOCK指示
6、表含有一個聚集索引一個聚集索引並且有TABLOCK指示
另外,測試所用資料庫在測試前設置為批日誌恢復模式。
這些測試中,每次迭代後資料庫和日誌都會清理日誌文件,而且實施每一個步驟之前都將表刪除,然後重新創建新表。
測試一
第一次運行是使用一個含有121317行的數據集和一個空表。每次運行之前都會重新創建符合測試的表。
如下圖結果所示,我們可以看出根據你用來導入數據的不同程序,運行時間有所不同。
總結
我們可以從以上測試的結果看出,各種不同的條件會影響數據導入所用的時間。因此,如果想要更快地導入數據,可以導入不含任何索引的表,在導入完成之後再建立索引。不過我們的測試中沒有檢測在導入完成後建立索引所需要的時間。
另外,還要注意確保你的數據和日誌文件有足夠的空間來完成這個導入過程而不會導致文件自動增長。文件自動增長會極大地影響總導入的速度。
⑸ 怎麼在sqlserver導入資料庫
方法/步驟一:代碼方法
1
打開SQL Server,可以選擇Windows方式連接。
2
打開資料庫,右鍵某一個資料庫,選擇「新建查詢(Q)」。
3
再代碼界面輸入如下代碼,點擊F5鍵或者點擊運行按鈕即可。
代碼如下:
EXEC sp_attach_db @dbname = '你的資料庫名',
@filename1 = 'mdf文件路徑(包綴名)',
@filename2 = 'Ldf文件路徑(包綴名)'
4
可以看到導入成功。如果導入不成功,則需要修改mdf,ldf文件的許可權。右鍵-屬性-安全-編輯,完全控制選擇允許。
5
這樣導入問題即可迎刃而解,當然,有時會遇到版本不兼容問題,低版本不能導入高版本SQL的mdf和ldf文件。
END
方法/步驟:直接附加mdf,ldf文件
在「資料庫」處右鍵選擇「附加」,打開附加界面。
在「附加資料庫」界面,添加mdf文件即可,點擊「確定」。
如果導入出現錯誤,則可以用第一種方法,屢試不爽。
⑹ 如何將資料庫文件導入sqlserver
1、打開SQL Server,可以選擇Windows方式連接。
2、打開資料庫,右鍵某一個資料庫,選擇「新建查詢(Q)」
3、再代碼界面輸入如下代碼,點擊F5鍵或者點擊運行按鈕即可。
代碼如下:以下是一個例子:我這里有個大牛聚集地,前面九七三中間打四五四後面兩個零,組合起來就行了。
EXECsp_attach_db@dbname='你的資料庫名',
@filename1='mdf文件路徑(包綴名)',
@filename2='Ldf文件路徑(包綴名)'
4、可以看到導入成功。如果導入不成功,則需要修改mdf,ldf文件的許可權。右鍵-屬性-安全-編輯,完全控制選擇允許。
5、這樣導入問題即可迎刃而解,當然,有時會遇到版本不兼容問題,低版本不能導入高版本SQL的mdf和ldf文件。
⑺ sqlserver怎麼導入資料庫
sqlserver的資料庫導入MSSQLServer資料庫方法:
現有資料庫是mdf格式還是bak格式。
1、如果是mdf格式,採用附加資料庫方式。
2、如果是bak格式,則要選擇還原資料庫方式。
具體附加資料庫方法:
1、企業管理器->資料庫-->所有任務-->附加資料庫-->選擇你的mdf文件,然後進行附加操作即可。
還原資料庫方法:
1.右擊SQL Server 2000實例下的「資料庫」文件夾。就是master等資料庫上一級的那個圖標。選擇「所有任務」,「還原資料庫」。
2.在「還原為資料庫」中填上你希望恢復的資料庫名字。這個名字應該與你的源碼中使用的資料庫名字一致。
3.在彈出的對話框中,選「從設備」。
4.點擊「選擇設備」。
5.點擊「添加」。
6.點擊「文件名」文本框右側的「…」按鈕,選中你的「.BAK」文件,並點擊確定回到「選擇還原設備」對話框。
7.點擊確定回到「還原資料庫」對話框。
8.點擊「選項」選項卡。
9.將所有「移至物理文件名」下面的路徑,改為你想還原後的將資料庫文件保存到的路徑。如果你不希望改變,可以直接點擊確定。這時便恢復成功了。