Import

在 SSDT 中發布數據部署

  • August 24, 2018

我需要創建部署後腳本,它將數據從 .csv 文件上傳到我的數據庫。但我不明白我該怎麼做。

當我嘗試在我的伺服器上部署我的項目時,我收到此錯誤消息:

(2354,1):SQL72014:.Net SqlClient 數據提供者:消息 4861,級別 16,狀態 1,第 9 行無法批量載入,因為無法打開文件“.\Data\DataFile.csv”。作業系統錯誤程式碼 3(系統找不到指定的路徑。)。(2346,0):SQL72045:腳本執行錯誤。執行的腳本:

有人可以幫我嗎?

PS 下面你可以找到我的文件範例。

我的 SSDT 項目的結構:

Source
   Data
       DataFile.csv
   Script
       PostDeployment
           DataFile.sql
   PostDeployment.sql

數據文件.sql:

IF OBJECT_ID('tempdb..#t') IS NOT NULL DROP TABLE #t
CREATE TABLE #t 
   (   
       Column NVARCHAR(100),
       Column2 NVARCHAR(100)
   )
;    
BULK INSERT #t
FROM '$(DataFile)' 
WITH (CODEPAGE = '1251', FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', DATAFILETYPE = 'widechar')

SELECT * INTO table1 FROM #t AS tcbm

PostDeployment.sql

:setvar DataFile .\Data\DataFile.csv
:r .\Script\PostDeployment\DataFile.sql

如果我更改:setvar DataFile..\..\Data\CarBrandModel- 部署也將失敗並出現相同的錯誤。

CSV 文件不包含在您部署的 dacpac 中,因此您需要確保使用 dacpac 複製它,並且如果您使用相對路徑,則工作目錄就是您認為的那樣。

我對額外文件所做的是將文件的“建構操作”設置為“如果較新則複製”,當 dacpac 建構在 bin 文件夾中時,您還將有一個“數據”子文件夾 - 只需確保將其複製到您的dacpac 總是。

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