精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SQL SERVER幾種數據遷移/導出導入的實踐

SQLServer提供了多種數據導出導入的工具和方法,在此,分享我實踐的經驗(只涉及數據庫與Excel、數據庫與文本文件、數據庫與數據庫之間的導出導入)。

(一)數據庫與Excel

方法1:

使用數據庫客戶端(SSMS)的界面工具。右鍵選擇要導出數據的數據庫,選擇“任務”——“導出數據”,下圖1,按照向導一步一步操作即可。而導入則相反,導入時,SQLServer會默認創建一張新表,字段名也默認跟導入的Excel標題一樣,并且會默認字段數據類型等。當然在可以在向導進行修改。需要注意的是如果標題不是英文而是中文,默認創建字段名也是中文,這將給后面數據更新操作帶來麻煩,所以最好還是以有意義的英文字段名。把數據導入后,再通過執行語句,把數據插入/更新到業務表。

figure-1:任務——導出數據

方法2:

從SQLServer2005開始,可以直接在SSMS上查詢出來的結果復制,然后粘貼到Excel上,對于少量數據來說,是非常快速方便的,需要注意的是長數字可能會變成科學記數法的形式,提前在Excel上指定列的格式為文本即可。

導入的話,ctrl + c 復制Excel上的數據,然后在選擇相關表,編輯數據,把數據直接粘貼上去即可。但是不建議直接粘貼到業務表(如果表是空白沒有數據,并且字段順序對應,可以這樣操作),而是建議先粘貼到一個新建的中間表中,然后再通過語句,把數據插入/更新到業務表。

這種方法的導出導入,適合于少量的數據,如5000行以內的記錄,大于5000行以上就不建議了,速度較慢,如果數據過大,還一定成功。

(二)數據庫與文本文件、數據庫與數據庫

數據庫之間的數據遷移或導出導入其實是比較方便的,比如備份數據庫后,在新的機器上做恢復。但是需要注意的是SQL2008之前的版本的備份無法在SQL2012或以上版本上直接恢復的,而是通過中間的SQL2008做一個過渡,把舊版本的數據庫恢復到SQL2008,然后做備份,最后在SQL2012上恢復。

如果是新版本(下面以SQL2012為例)的備份文件恢復到舊版本(以SQL2008為例)上就比較麻煩了,一般是不支持新版本備份文件在舊版本中恢復的。只能通過編寫腳本,把新版本的數據導入到舊版本中。

方法1:

首先推薦使用的是數據不落地的“鏈接服務器”。使用SQL2012的SSMS,同時連接到SQL2012和SQL2008的實例,通過編寫腳本把SQL2012的數據導入到SQL2008中。兩個實例的可以通過鏈接服務器來連接。以下是設置步驟。

figure-2:新建鏈接服務器

figure-3:鏈接服務器和數據源

figure-4:認證

figure-5:創建成功后,可以直接瀏覽鏈接服務器的目錄,也可以使用語句查詢了。

也可以使用腳本來創建鏈接服務器。

--創建鏈接服務器EXEC sp_addlinkedserver @server='LINKED_SERVER_TEST2',--被訪問的服務器別名@srvproduct='',@provider='SQLOLEDB',@datasrc='192.168.88.6,11433'--數據源GO--創建登錄名和密碼EXEC sys.sp_addlinkedsrvlogin@rmtsrvname = 'LINKED_SERVER_TEST2', -- 被訪問的服務器別名@useself = 'false',@locallogin = ,@rmtuser = 'sa', -- 數據源登錄名@rmtpassword = 'psd123456' -- 數據源登錄密碼GO--設置數據可以訪問EXEC sys.sp_serveroption@server = 'LINKED_SERVER_TEST2', @optname = 'data access',@optvalue = N'true'GO

code-1:創建鏈接服務器的腳本

創建成功后,可以直接查詢數據。

figure-6:查詢鏈接服務器的數據

通過視圖sys.servers可以查詢所有服務器及相關的屬性。

figure-7:查詢所有鏈接服務器

在SSMS上或運行以下腳本可以刪除指定的鏈接服務器。

--刪除鏈接服務器及所有登錄EXEC sys.sp_dropserver @server = 'LINKED_SERVER_TEST2', @droplogins = 'droplogins' GO

code-2:刪除鏈接服務器及所有登錄

方法2:

如果兩個實例不能連接,只能在SQL2012上導出數據,再到SQL2008上導入。SQLServer提供生成包含數據的腳本工具,下圖2。在第三步的“高級”選項里有一項“Types of data to scripts”有三個選擇:Data only,Schema and data,Schema only,分別是只生成數據、生成表(對象)和數據,表(對象)。還有生成腳本的版本“Script for Server Version”,下圖3。其他選項,按實際需要選擇。

figure-8:任務——生成腳本

figure-9:生成腳本的高級選項

也可以使用存儲過程生成包含數據的腳本。這里介紹一個別人已經做寫好存儲過程:sp_generate_inserts。運行之后,會按表每條記錄生成一條insert的語句

View Code

code-3:sp_generate_inserts腳本源代碼

在我的實際使用中,只有兩三個參數比較常用,分別是@table_name、@from和@owner,如果表的架構使用默認的dbo,則可以省略。以下是一個使用的例子:

figure-10:使用sp_generate_inserts的一個例子

其他參數的用法,這里就不一一解釋了。我經常使用這個存儲過程做一些簡單而少量(如數萬行記錄以內)的數據導出導入,比前面介紹的方法方便快捷許多。但這個存儲過程支持處理一般常用的數據類型,像XML這種類型則不支持。還有,如果生成的數據太多太大,SSMS返回數據會很慢,甚至SSMS會掛了,這時還是使用SSMS自帶的導出腳本到文件穩妥些。如果使用生成的數據腳本文件很大,幾百MB甚至上GB,在導入時,就不能直接使用SSMS直接打開來執行了。可以使用SQLCMD實用工具來在執行腳本。如下面的一個例子,在D盤下有一個腳本1.sql,內容為:

USE AdventureWorks2008R2GOSELECT * FROM Person.CountryRegion;GO

code-4:SQLMCD的測試腳本

在運行下輸入CMD,輸入:

sqlcmd -S localhost -d AdventureWorks2008R2 -i D:\1.sql

code-5:SQLMCD的命令

回車執行后如下圖,SQLCMD的詳細用法,請參考:https://msdn.microsoft.com/zh-cn/library/ms180944.aspx

figure-11:SQLCMD的測試例子

方法3:

使用BCP導出導入大容量數據。可以參閱我的另一篇博客《BCP導出導入大容量數據實踐》。

以上幾種方法是我在日常工作比較常使用的數據導出導入的工具,每一種方法都有各自的優勢和不同的使用場景,使用不同的方法組合,可以節省不少時間,提高工作效率,希望對您的有所幫助。如果您有更好的建議或方法歡迎告訴我!

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何安裝 SQL Server Management Studio18.12.1?
BCP導出導入大容量數據實踐
第一部分:SQL基礎 - MS-SQL Server / 基礎類
SQL Server 2008連接Oracle操作步驟詳細記錄
《SQL Server數據庫應用開發技術》第3章 SQL Server 2005基礎
試用 Azure Sql 數據庫
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 勐海县| 永靖县| 开原市| 朝阳县| 崇仁县| 曲水县| 深水埗区| 平度市| 洪雅县| 长春市| 分宜县| 朝阳县| 曲沃县| 伊春市| 赣榆县| 舞钢市| 米泉市| 尚义县| 塔河县| 珲春市| 定南县| 淮南市| 三门峡市| 信阳市| 宁津县| 蒙城县| 徐闻县| 岳阳市| 吉水县| 衡南县| 来安县| 运城市| 轮台县| 大厂| 桐梓县| 西峡县| 厦门市| 兰溪市| 沙田区| 贵港市| 南平市|