Sql-Server
如何從客戶端電腦 SQL Server 2019 寫入和讀取文件
我需要準備一個儲存過程,它可以導出與架構中的表一樣多的文件,但文件需要寫入本地電腦上的特定路徑,例如 C:\Temp\ 而不是 SQL Server 目標。當文件存在時,它應該被覆蓋,如果不是簡單地創建的話。我還需要從本地文件中讀取:帶有參數和模板,將在程序中使用。我知道除了讀/寫文件的方法之外的所有事情。
我發現了一些導出到文件的想法:
- xp_cmdshell 執行 bcp 命令我只能在 Sql Server 2019 機器上寫入文件。
- 我還發現 sp_configure ‘Ole Automation Procedures’, 1;
DECLARE @OLE INT DECLARE @FileID INT EXECUTE sp_OACreate 'Scripting.FileSystemObject', @OLE OUT EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileID OUT, 'D:\data\sqltotext.text', 8, 1 EXECUTE sp_OAMethod @FileID, 'WriteLine', Null, 'Today is wonderful day' EXECUTE sp_OADestroy @FileID EXECUTE sp_OADestroy @OLE GO
您知道實現這一目標的更簡單方法嗎?
我想在 JD 的文章中強調第 3 點。這是您絕對希望在 SQL Server 之外做的事情,如果可能的話。
“SQL Server 之外的”可能是 SSIS、Powershell、您用自己喜歡的程式語言(C#、python)編寫的東西、某些客戶端應用程序等。
可能最簡單的方法是使用 dbatools powershell 庫和幾行 powershell。
例如
$ filename = “C:\Users\way0u\OneDrive\Documents\SQL\Customer” Invoke-Sqlcmd -Query “SELECT * FROM [Sandbox].[dbo].[Customer]” -ServerInstance “.\SQL2019” | Export-Csv -Path " $ 文件名.csv" -NoTypeInformation
這裡的庫 https://dbatools.io/ 範例 https://www.sqlservercentral.com/articles/exporting-data-with-powershell