我們都知道日常在面對數據需求時需要導出數據,比較少量的數據導出我們一般是通過查詢後另存即可,當面對數據量比較大的時候我們應該怎麼處理?我搜索總結一些幾個方法:1、bcp 導出。2、資料庫本身自帶的導入導出。3、如果更大的話,直接把備份庫直接拷貝出來,導出整個庫方法1:(少數量導入和導出)select ...
我們都知道日常在面對數據需求時需要導出數據,比較少量的數據導出我們一般是通過查詢後另存即可,當面對數據量比較大的時候我們應該怎麼處理?
我搜索總結一些幾個方法:1、bcp 導出。2、資料庫本身自帶的導入導出。3、如果更大的話,直接把備份庫直接拷貝出來,導出整個庫
方法1:(少數量導入和導出)
select *
from aa.dbo.studens
方法二:資料庫本身自帶的導出:點擊資料庫(aaa)--任務--導出(入)數據—數據源(選擇與源的數據存儲格式相匹配的數據訪問介面。
可用於數據源的訪問介面可能不止一個。 例如,對於SQL Server可以使用SQL ServerNative Client、.NET Framework 數據提供程式的
SQL Server 或 Microsoft OLE DB Provider for SQL Server):選擇SQL Server Native Client or Microsoft OLE DB Provider for SQL Server 。
登錄用戶名和密碼--目標:選擇你想存為的文件格式(平面文件目標)--文件名(存放地址:C:\aa.txt)---點擊下一步到:源表或源視圖(dbo.student)
——行分隔符:選擇({CR}{LF})列分隔符(逗號{,})--點下去就行了
註:導入時註意數據類型設置
方法三:bcp導出
--先開啟cmdshell
exec sp_configure 'show advanced options', 1
go
reconfigure
go
exec sp_configure 'xp_cmdshell', 1
go
reconfigure
go
--導出指定表的文本文件
exec master..xp_cmdshell 'bcp dbname..tablename out D:\DT.txt -c -Sservername -Usa -Ppassword'
--根據sql語句導出指定表的文本文件
exec master..xp_cmdshell 'bcp "select top 10 * from dbname..tablename" queryout d:\DT.txt -c -Sservername -Usa -Ppassword'
--導出指定表的文本文件,指定分隔符,在-t後設置分隔符
exec master..xp_cmdshell 'bcp dbname..tablename out D:\DT.txt -c -t, -Sservername -Usa -Ppassword'
--導入指定表的文本文件
exec master..xp_cmdshell 'bcp dbname..tablename in d:\DT.txt -c -Sservername -Usa -Ppassword'
註:
1.如果數據表裡已有數據,此方法從文本導數據到數據表時,會在後面追加數據,不會先清空表。
2.如果導出時指定過分隔符,導入時用上面的導入方法會報錯。解決方法是不要指定分割符
3.此語句在sqlserver里執行時,不能換行,否則報錯