前提・実現したいこと
定義済みのテーブルと同じ構造の空テーブルを作成し、CSVファイルをBULK INSERT
した後に後続の処理として、MERGE
構文で「既に存在するレコードは更新、存在しないレコードを挿入」します。
その際、空テーブルの作成にWITH
句を利用すると下記のエラーメッセージが表示されます。
発生している問題・エラーメッセージ
キーワード 'BULK' 付近に不適切な構文があります。
該当のソースコード
SQL
1WITH T1 AS( 2SELECT * FROM TEST_TABLE WHERE 1=2 3) 4 5BULK INSERT T1 6FROM 'C:\hoge.csv' 7/****** 後続の処理 ******/ 8
試したこと
SELECT INTO
を利用して一時テーブルを作ることで同様の作業は可能です。
しかし、後続の処理後にDROP TABLE
を行う場合、テスト段階では後続の処理でエラーが起こったときに再度DROP TABLE
する必要があるため面倒です。
IF OBJECT_ID('tempdb..#T1') IS NOT NULL DROP TABLE #T1
のように「存在すれば削除する」構文もありますが、WITH句ほど手軽ではありません。
SQL
1 2SELECT * INTO #T1 FROM TEST_TABLE WHERE 1=2 3BULK INSERT #T1 4FROM 'C:\hoge.csv' 5 6/****** 後続の処理 ******/ 7 8DROP TABLE #T1
補足情報(FW/ツールのバージョンなど)
Microsoft SQL Server 2008 (SP4) - 10.0.6000.29 (X64)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/07 07:31
2021/05/07 08:02 編集
2021/05/07 08:10
2021/05/07 08:15 編集
2021/05/10 01:24
2021/05/10 02:44