❶ sql server 2005 查詢出的結果如果保存為 excel格式
打開 SQL server企業管理器
❷ BCP文件如何放進SQL Server 2005 我有一個.bcp 文件,怎麼放進sql啊
--執行的時候 [14年1月底].dbo.a" queryout 。。。這里不要換行
EXEC master..xp_cmdshell 'BCP "select * from [14年1月底].dbo.a"
queryout "C:\Documents and Settings\Administrator\桌面\bcp.txt" -c -t "|" -U sa -P sa'
❸ 如何刪除大量數據 sql server2005 數據量在8千萬左右
你要整表刪除嗎,那麼你用truncate table 可以瞬間刪除所有記錄,但是這個不記錄log,無法回滾。也不能加條件。
如果要加條件,就只好用delete了,或者就是用DTS把你所要的表導出到文本,然後清空表,再把文本導回表中。
你用sp_spaceused 'talbe_name'可以迅速查到你要的記錄數,及表所佔的空間。
truncate table table_name
delete table_name where .........
sp_spaceused 'table_name'
如果這樣你可以用bcp先導出你要的5千萬數據
先count(*)你的記錄然後-8kw=@num
1、在cmd下,導出你要保留的記錄到文本data_1中
E:\>bcp "select top @num * from db.dbo.table order by id desc" queryout data_1.txt -c -t "|" -r \n -U sa -P password
2、truncate table table_name ---trun掉你的表
3、將 data_1.txt 的數據導入到table中
E:\temp>bcp db.dbo.Table in data_1.txt -b 5000 -c -t ",|" -r \n -U sa -P password
4、ok搞定
速度絕對比delete快不知道多少倍。
而且日誌也比較小。
然後你要高出1千五百萬也可以用bcp來做。
效率很高。
❹ 系統win2003 資料庫sqlserver2005 使用bcp 將txt文件插入資料庫報錯。。。。
先執行以下以句再試下
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
❺ sql server2005中bcp導出臨時表不成功,始終報臨時表無效,但我直接查詢臨時表都可以查出數據,這是為何
大概是因為創建臨時表#tempXml的連接和bcp的連接不是同一個連接,因而臨時表對bcp連接不可見。
把臨時表創建成全局臨時表,應該可以解決此問題。創建方法一樣,只是以兩個##開頭,例如全局臨時表名##tempXml。
❻ 將excel數據導入SQLServer2005
在企業管理器的導入一步步操作或用
語句如下
--從Excel文件中,導入數據到SQL資料庫中,很簡單,直接用下面的語句:
/*===================================================================*/
--如果接受數據導入的表已經存在
insertinto表select*from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
--如果導入數據並生成表
select*into表from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
/*===================================================================*/
--如果從SQL資料庫中,導出數據到Excel,如果Excel文件已經存在,而且已經按照要接收的數據創建好表頭,就可以簡單的用:
insertintoOPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
select*from表
--如果Excel文件不存在,也可以用BCP來導成類Excel的文件,注意大小寫:
--導出表的情況
EXECmaster..xp_cmdshell'bcp資料庫名.dbo.表名out"c:\test.xls"/c-/S"伺服器名"/U"用戶名"-P"密碼"'
--導出查詢的情況
EXECmaster..xp_cmdshell'bcp"SELECTau_fname,au_lnameFROMpubs..authorsORDERBYau_lname"queryout"c:\test.xls"/c-/S"伺服器名"/U"用戶名"-P"密碼"'
/*--說明:
c:\test.xls為導入/導出的Excel文件名.
sheet1$為Excel文件的工作表名,一般要加上$才能正常使用.
--*/
❼ 如何導出 sql server2005資料庫中的所有表數據
你需要做的第一件事是確定xp_cmdshell是可用的。你可以選擇下面兩種方法中的一種來實現。
1.你可以使用sp_configure並執行下面的腳本。
EXECmaster.dbo.sp_configure'showadvancedoptions',1
RECONFIGURE
EXECmaster.dbo.sp_configure'xp_cmdshell',1
RECONFIGURE
2.你可以使用SurfaceAreaConfiguration工具。
選擇功能中的SurfaceAreaConfiguration並檢查Enablexp_cmdshell檢驗欄。
圖一
現在既然你已經使xp_cmdshell可用,那麼你可以准備輸出你的文件。
下面是一個示例命令,它將把系統文件表的結果輸出到以逗號分割的文件bcptest.txt中。只需復制並把它粘貼到一個查詢窗口中且執行這個查詢。
EXECxp_cmdshell'bcp"SELECT*FROMsysfiles"queryout"C:bcptest.txt"-T-c-t,'
註:BCP是一個命令行實用工具,xp_cmdshell要求只能在一個SQL批處理內使用。
當在"master"資料庫中執行上面的命令時將得到這個輸出結果。
圖二
使用的參數是:
lQueryout選項允許你指定一個查詢來輸出。這可以像我們使用的查詢那樣簡單也可以像你需要的那樣復雜。你也可以創建一個視圖並從視圖中選擇數據。
lfilename是存儲結果的,它位於queryout選項之後。
l-T參數指定bcp實用工具通過集成安全使用一個可信連接來連接到SQLServer。如果你想使用一個SQLServer登陸,那麼你可以使用-P(密碼)和-U(用戶)。
l-c指定將用於各個欄位的字元數據類型。
l-t參數允許你指定一個欄位定界符。在-t之後的字元將用於隔開數據欄位。如果-t被刪除了,那麼tab將用於默認定界符。
另一個你可能需要使用的參數是-S,你可以用它來指定伺服器名稱。如果你有一個指定的實例,那麼你需要使用這個參數。下面是一個連接到伺服器"DEVELOP"和實例"DEV1"的例子。
EXECxp_cmdshell'bcp"selectname,type_desc,create_datefrom
sys.objects"queryout"C:bcptest2.txt"-T-SDEVELOPDEV1-c-t,'
你也必須知道使用參數-t和-T的實例是不一樣的,所以要保證你在實例中使用正確的參數。
❽ SQL server 2005 使用bcp讀取其他機器上的txt文件報錯「無法打開BCP主數據文件」,映射路徑應該如何使用
將另一台電腦磁碟下文件夾做共享處理就OK 了!
❾ BCP 導出數據的問題 老是不成功 SQL2005
動作可以選擇。
(1) 導入。
這個動作使用in命令完成,後面跟需要導入的文件名。
(2) 導出。
這個動作使用out命令完成,後面跟需要導出的文件名。
(3) 使用SQL語句導出。
這個動作使用queryout命令完成,它跟out類似,只是數據源不是表或視圖名,而是SQL語句。
(4) 導出格式文件。
這個動作使用format命令完成,後而跟格式文件名。
下面介紹一些常用的選項:
-f format_file
format_file表示格式文件名。這個選項依賴於上述的動作,如果使用的是in或out,format_file表示已經存在的格式文件,如果使用的是format則表示是要生成的格式文件。
-x
這個選項要和-f format_file配合使用,以便生成xml格式的格式文件。
-F first_row
指定從被導出表的哪一行導出,或從被導入文件的哪一行導入。
-L last_row
指定被導出表要導到哪一行結束,或從被導入文件導數據時,導到哪一行結束。
-c
使用char類型做為存儲類型,沒有前綴且以"\t"做為欄位分割符,以"\n"做為行分割符。
-w
和-c類似,只是當使用Unicode字元集拷貝數據時使用,且以nchar做為存儲類型。
-t field_term
指定字元分割符,默認是"\t"。
-r row_term
指定行分割符,默認是"\n"。
-S server_name[ \instance_name]
指定要連接的SQL Server伺服器的實例,如果未指定此選項,BCP連接本機的SQL Server默認實例。如果要連接某台機器上的默認實例,只需要指定機器名即可。
-U login_id
指定連接SQL Sever的用戶名。
-P password
指定連接SQL Server的用戶名密碼。
-T
指定BCP使用信任連接登錄SQL Server。如果未指定-T,必須指定-U和-P。
-k
指定空列使用null值插入,而不是這列的默認值。
2. 如何使用BCP導出數據
(1) 使用BCP導出整個表或視圖。
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password" --使用密碼連接
或
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T --使用信任連接
下面是上述命令執行後的輸出結果
Starting ...
105 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 10 Average : (10500.00 rows per sec.)
下面是currency1.txt的部分內容
AED Emirati Dirham 1998-06-01 00:00:00.000
AFA Afghani 1998-06-01 00:00:00.000
... ... ...
... ... ...
ZWD Zimbabwe Dollar 1998-06-01 00:00:00.000
在使用密碼登錄時需要將-U後的用戶名和-P後的密碼加上雙引號。
註:BCP除了可以在控制台執行外,還可以通過調用SQL Server的一個系統存儲過程xp_cmdshell以SQL語句的方式運行BCP。如上述第一條命令可改寫為
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U"sa" -P"password"'
執行xp_cmdshell後,返回信息以表的形式輸出。為了可以方便地在SQL中執行BCP,下面的命令都使用xp_cmdshell執行BCP命令。
(2) 對要導出的表進行過濾。
BCP不僅可以接受表名或視圖名做為參數,也可以接受SQL做為參數。通過SQL語句可以對要導出的表進行過濾,然後導出過濾後的記錄。
EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -c -U"sa" -P"password"'
BCP還可以通過簡單地設置選項對導出的行進行限制。
EXEC master..xp_cmdshell 'BCP "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -F 10 -L 13 -c -U"sa" -P"password"'
這條命令使用了兩個參數-F 10和-L 13,表示從SELECT TOP 20 * FROM AdventureWorks.sales.currency所查出來的結果中取第10條到13條記錄進行導出。
3. 如何使用BCP導出格式文件
BCP不僅可以根據表、視圖導入導出數據,還可以配合格式文件對導入導出數據進行限制。格式文件以純文本文件形式存在,分為一般格式和xml格式。用戶可以手工編寫格式文件,也可以通過BCP命令根據表、視圖自動生成格式文件。
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format1.fmt -c -T'
上述命令將currency表的結構生成了一個格式文件currency_format1.fmt,下面是這個格式文件的內容。
9.0
3
1 SQLCHAR 0 6 "\t" 1 CurrencyCode SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "\t" 2 Name SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 24 "\r\n" 3 ModifiedDate
這個格式文件記錄了這個表的欄位(共3個欄位)類型、長度、字元和行分割符和欄位名等信息。
BCP還可以通過-x選項生成xml格式的格式文件。
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format2.fmt -x -c -T'
xml格式文件所描述的內容和普通格式文件所描述的內容完全一樣,只是格式不同。
4. 如何使用BCP導入數據
BCP可以通過in命令將上面所導出的currency1.txt和currency2.txt再重新導入到資料庫中,由於currency有主鍵,因此我們將復制一個和currency的結構完全一樣的表。
SELECT TOP 0 * INTO AdventureWorks.sales.currency1 FROM AdventureWorks.sales.currency
將數據導入到currency1表中
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -T'
導入數據也同樣可以使用-F和-L選項來選擇導入數據的記錄行。
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -c -F 10 -L 13 -T'
在導入數據時可以根據已經存在的格式文件將滿足條件的記錄導入到資料庫中,不滿足則不導入。如上述的格式文件中的第三個欄位的字元長度是24,如果某個文本文件中的相應欄位的長度超過24,則這條記錄將不被導入到資料庫中,其它滿足條件的記錄正常導入。
使用普通的格式文件
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -f c:\currency_format1.fmt -T'
使用xml格式的格式文件
EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -x -f c:\currency_format2.fmt -T'
總結
BCP命令是SQL Server提供的一個快捷的數據導入導出工具。使用它不需要啟動任何圖形管理工具就能以高效的方式導入導出數據。當然,它也可以通過xp_cmdshell在SQL語句中執行,通過這種方式可以將其放到客戶端程序中(如delphi、c#等)運行,這也是使客戶端程序具有數據導入導出功能的方法之一。
❿ sql server 2005 bcp可以用where條件篩選吧
set @sqlstr='bcp "select * from test..table where convert(varchar(10),starttime,120)=convert(varchar(10),dateadd(day,-1,getdate()),120) " queryout "D:\SQLautobackup\'+@sqldate+'.txt" -c -T'
exec master.dbo.xp_cmdshell @sqlstr 試試