我需要创建部署后脚本,它将数据从 .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
后部署.sql
:setvar DataFile .\Data\DataFile.csv
:r .\Script\PostDeployment\DataFile.sql
如果我更改:setvar DataFile
为..\..\Data\CarBrandModel
- 部署也会因同样的错误而失败。
CSV 文件不包含在您部署的 dacpac 中,因此您需要确保使用 dacpac 复制它,并且如果您使用相对路径,工作目录就是您认为的那样。
我对额外文件所做的是将文件的“构建操作”设置为“如果较新则复制”,当 dacpac 在 bin 文件夹中构建时,您还将有一个“数据”子文件夹 - 只要确保您将其复制到您的dacpac总是。
编辑