當前位置:首頁 » 編程語言 » sqlserver導入資料庫

sqlserver導入資料庫

發布時間: 2024-01-03 02:23:26

Ⅰ 如何把sqlserver數據遷移到mysql資料庫及需要注意事項

以下有幾款遷移工具的對比,可以參考,比較推薦DB2DB.

軟體易用性主要是指軟體在導入前的配置是否容易。由於很多軟體設計是面向程序員而非一般的資料庫管理人員、甚至是普通的應用程序實施人員,而這一類人員很多時候並沒有數據源配置經驗。因為一些使用 ODBC 或者 ADO 進行配置的程序往往會讓這類用戶造成困擾(主要是不知道應該選擇什麼類型的資料庫驅動程序)。下面讓我們看看四個工具的設計界面:

>>>>

1、SQLyog

SQLyog使用的是古老的 ODBC 連接,但對於新一代的程序來說,這種方式的非常的不熟悉並且不容易使用,並且必須要求本機安裝好相應的資料庫的 ODBC 驅動程序(SQL Server 一般自帶好)。

>>>>

2、NavicatPremium

NavicatPremium是四個應用工具中設計最不人性化的一個:從上圖怎麼也想像不到要點按那個小按鈕來添加一個新的連接,並且這個連接設置不會保存,每次導入時都必須重新設置。NavicatPremium使用的是比 ODBC 稍先進的 ADO 設置方式(199X年代的產物),但使用上依然是針對老一代的程序員。

>>>>

3、Mss2sql

Mss2sql是最容易在網路上搜索出來的工具,原因之一是它出現的時間較早。


DB2DB同樣遷移 300萬數據時,僅僅使用了 2 分 44 秒,這個速度相當驚人。不過最後的結果出現一個 BUG,就是提示了轉換成功,但後面的進度條卻沒有走完(在後面的數據完整性評測中,我們驗證了數據其實是已經全部處理完畢了)。

Ⅱ SQLServer資料庫中成批導入數據的幾個常用方法

在軟體項目實施的時候,數據導入一直是項目人員比較頭疼的問題。如要把產品信息從現有的進銷存管理系統中導入到ERP系統中,卻讓企業用戶手工的輸入這些信息,不怎麼現實。
其實,在SQL Server中本來就集成了很多成批導入數據的方法。有些項目實施顧問頭疼的問題,在我們資料庫管理員眼中,是小菜一碟。現在的重點就是,如何讓用戶了解這些方法,讓數據導入變得輕松一些。
第一種方法:使用Select Into語句
若企業資料庫都採用的是SQL Server資料庫的話,則可以利用Select Into語句來實現數據的導入。Select Into語句,他的作用就是把數據從另外一個資料庫中查詢出來,然後加入到某個用戶指定的表中。
在使用這條唯輪語句的時候,需要注意幾個方面的內容。
一是需要在目的資料庫中先建立相關的表。如想把進銷存系統資料庫(SQLServer)中的產品信息表(Proct)導入到ERP系統中的產品信息表(M_Proct)中。則前期是在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軟體對於處理大量記錄的時候,速度比較慢。若這種方式行不通的話,則筆者比較傾向於採用數據轉換的處理方式。這個操作起來雖然比較復雜,但是,其可以提供比較復雜的驗證,而且可以在圖形化的界面中對數據進行修改,同時效率也比較高。

Ⅲ sqlserver導資料庫有幾種方法

1. SQL Server導入導出向導,這種方式是最方便的.

導入向導,微軟提供了多種數據源驅動,包括SQL Server Native Cliant, OLE DB For Oracle,Flat File Source,Access,Excel,XML等,基本上可以滿足系統開發的需求.
同樣導出向導也有同樣多的目的源驅動,可以把數據導入到不同的目的源.
對資料庫管理人員來說這種方式簡單容易操作,導入時SQL Server也會幫你建立相同結構的Table.

2. 用.NET的代碼實現(比如有一個txt或是excel的檔案,到讀取到DB中)
2.1 最為常見的就是循環讀取txt的內容,然後一條一條的塞入到Table中.這里不再贅述.
2.2 集合整體讀取,使用OLEDB驅動.
代碼如下:

代碼
string strOLEDBConnect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\1\;Extended Properties='text;HDR=Yes;FMT=Delimited'";
OleDbConnection conn = new OleDbConnection(strOLEDBConnect);
conn.Open();
SQLstmt = "select * from 1.txt";//讀取.txt中的數據
DataTable dt=new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(SQLstmt, conn);
da.Fill(dt);//在DataSet的指定范圍中添加或刷新行以匹配使用DataSet、DataTable 和IDataReader 名稱的數據源中的行。
if(dt.Rows.Count>0)
foreach(DataRow dr in dt.Rows)
{
SQLstmt = "insert into MyTable values('" + dr..."

3.BCP,可以用作大容量的數據導入導出,也可以配合來使用.
語法:

代碼
bcp {[[database_name.][schema].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-mmax_errors] [-fformat_file] [-x] [-eerr_file]
[-Ffirst_row] [-Llast_row] [-bbatch_size]
[-ddatabase_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )]
[-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term]
[-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
[-S [server_name[\instance_name]]] [-Ulogin_id] [-Ppassword]
[-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

請注意數據導入導出的方向參數:in,out,queryout
如:

如:

4.BULK INSERT. T-SQL的命令,允許直接導入數據
語法:

BULK INSERT
[ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ]
FROM 'data_file'
[ WITH
(
[ [ , ] BATCHSIZE =batch_size ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ [ , ] DATAFILETYPE =
{ 'char' | 'native'| 'widechar' | 'widenative' } ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] FIRSTROW = first_row ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] FORMATFILE ='format_file_path' ]
[ [ , ] KEEPIDENTITY ]
[ [ , ] KEEPNULLS ]
[ [ , ] KILOBYTES_PER_BATCH =kilobytes_per_batch ]
[ [ , ] LASTROW =last_row ]
[ [ , ] MAXERRORS =max_errors ]
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] ROWS_PER_BATCH =rows_per_batch ]
[ [ , ] ROWTERMINATOR ='row_terminator' ]
[ [ , ] TABLOCK ]
[ [ , ] ERRORFILE ='file_name' ]
)]

重要參數:

FIELDTERMINATOR,欄位分隔符
FIRSTROW:第一個數據行
ROWTERMINATOR:行終結符
如:

BULK INSERT dbo.ImportTest
FROM 'C:\ImportData.txt'
WITH ( FIELDTERMINATOR =',', FIRSTROW = 2 )

5. OPENROWSET也是T-SQL的命令,包含有DB連接的信息和其它導入方法不同的是,OPENROWSET可以作為一個目標表參與INSERT,UPDATE,DELETE操作.
語法:

OPENROWSET
( { 'provider_name', { 'datasource';'user_id';'password'
| 'provider_string' }
, { [ catalog. ] [ schema. ] object
| 'query'
}
| BULK 'data_file',
{ FORMATFILE ='format_file_path' [ <bulk_options> ]
| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }
} )<bulk_options> ::=
[ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]
[ , ERRORFILE ='file_name' ]
[ , FIRSTROW = first_row ]
[ , LASTROW = last_row ]
[ , MAXERRORS = maximum_errors ]
[ , ROWS_PER_BATCH =rows_per_batch ]

如:

INSERT INTO dbo.ImportTest
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\ImportData.xls', 'SELECT * FROM [Sheet1$]') WHERE A1 IS NOT NULL

6.OPENDATASOURCE
語法:
OPENDATASOURCE ( provider_name,init_string )

如:

INSERT INTO dbo.ImportTest
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\ImportData.xls;Extended Properties=Excel 8.0')...[Sheet1$]

7.OPENQUERY.是在linked server的基礎上執行的查詢.所以執行之前必須先建立好link server.OPENQUERY的結果集可以作為一個table參與DML的操作.

語法:
OPENQUERY (linked_server ,'query')

如:

EXEC sp_addlinkedserver 'ImportData',
'Jet 4.0', 'Microsoft.Jet.OLEDB.4.0',
'C:\ImportData.xls',
NULL,
'Excel 8.0'
GO

INSERT INTO dbo.ImportTest
SELECT *
FROM OPENQUERY(ImportData, 'SELECT * FROM [Sheet1$]')

Ⅳ sqlserver中怎麼將sql文件導入資料庫中

1.打開SQL Server Management Studio,在對象資源管理器中,展開「SQLServer 實例」→「資料庫」→「Benet」節點,單擊滑鼠右鍵,選擇「任務」→「導入數據」命令。出現歡迎界面,單擊「下一步」按鈕,出現「選擇數據源」對話框。在「選擇數據源」對話框中設置如下選項

熱點內容
linux查看ftp日誌 發布:2024-11-30 06:33:19 瀏覽:474
設置截屏存儲 發布:2024-11-30 06:29:00 瀏覽:393
jpg演算法 發布:2024-11-30 06:28:55 瀏覽:194
怎麼刪除u盤中的文件夾 發布:2024-11-30 06:28:20 瀏覽:215
iphone文件夾打開 發布:2024-11-30 06:13:43 瀏覽:297
如何配置Javaweb環境 發布:2024-11-30 06:09:24 瀏覽:120
怎麼使用Androidapi 發布:2024-11-30 06:08:43 瀏覽:60
包鋼伺服器地址 發布:2024-11-30 06:06:27 瀏覽:562
繁體壓縮 發布:2024-11-30 06:06:22 瀏覽:38
osql執行sql 發布:2024-11-30 06:01:37 瀏覽:12