.csvファイルからデータベースにデータをアップロードする展開後のスクリプトを作成する必要があります。しかし、どうすればこれができるのか理解できません。
プロジェクトをサーバーにデプロイしようとすると、次のエラーメッセージが表示されます。
(2354,1):SQL72014:.Net SqlClientデータプロバイダー:メッセージ4861、レベル16、状態1、9行目ファイル "。\ Data\DataFile.csv"を開くことができなかったため、一括読み込みできません。オペレーティングシステムエラーコード3(システムは指定されたパスを見つけることができません。) (2346,0):SQL72045:スクリプト実行エラー。実行されたスクリプト:
誰かが私を助けてくれませんか?
P.S.以下に私のファイルの例を示します。
私のSSDTプロジェクトの構造:
Source
Data
DataFile.csv
Script
PostDeployment
DataFile.sql
PostDeployment.sql
DataFile.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。
ed