Sql-Server

如何從客戶端電腦 SQL Server 2019 寫入和讀取文件

  • June 25, 2021

我需要準備一個儲存過程,它可以導出與架構中的表一樣多的文件,但文件需要寫入本地電腦上的特定路徑,例如 C:\Temp\ 而不是 SQL Server 目標。當文件存在時,它應該被覆蓋,如果不是簡單地創建的話。我還需要從本地文件中讀取:帶有參數和模板,將在程序中使用。我知道除了讀/寫文件的方法之外的所有事情。

我發現了一些導出到文件的想法:

  1. xp_cmdshell 執行 bcp 命令我只能在 Sql Server 2019 機器上寫入文件。
  2. 我還發現 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

引用自:https://dba.stackexchange.com/questions/285797