我正在使用的某些軟體的限制要求我跳出框框思考,那么您能否有一個查詢自動回傳包含結果的“檔案”?我想它會是 BLOB 或 base 64 編碼的字串或類似的東西。
使用 Microsoft SQL Server
uj5u.com熱心網友回復:
您可以使用兩種方法來實作這一點
1.使用SQLcmd
SQLCMD -S SERVERNAME -E -Q "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable"
-s "," -o "D:\MyData.csv"
在 cmd 中運行上述命令并達到預期結果。
2. 使用 OpenRawset
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName
您需要有可用的 Microsoft.ACE.OLEDB.12.0 提供程式。Jet 4.0 提供程式也可以作業,但它很古老,所以我改用了這個。
限制:
.CSV 檔案必須已經存在。如果您使用標題 (HDR=YES),請確保 .CSV 檔案的第一行是所有欄位的分隔串列。
uj5u.com熱心網友回復:
如果您可以在目標資料庫或同一服務器上的另一個資料庫中創建物件,則可以使用我對這個問題的回答中的存盤程序和函式:SSMS:自動將來自同一 SQL 腳本的多個結果集保存到 Excel 中的單獨選項卡中?
您只需要排除 @OutputFileName 引數以強制輸出為單列、單行 varbinary(max)。
select * into #systables from sys.tables;
select * into #syscolumns from sys.columns;
select * into #systypes from sys.types;
exec dbo.GetExcelSpreadsheetData
@Worksheets = 'sys.tables/#systables/autofilter|sys.columns/#syscolumns/autofilter|sys.types/#systypes'
drop table #systables;
drop table #syscolumns;
drop table #systypes;
輸出(截斷):
ExcelSpreadsheetData
-------------------------------------
0x504B0304140000000800DB78295479400A1
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/406831.html
標籤:
上一篇:單元測驗(Flutter中的MultipartRequest)
下一篇:相同復合鍵的固定值
