現在、SQLServer上に存在する既存テーブルから、少し仕様の変わった新テーブルへの移行作業を行っています。
【使用環境】
Windows7 32bit
SQLServer 2014
【やりたい作業の流れ】
1.既存テーブルをSQLServerのエクスポートウィザードを使用してCSV出力
↓
2.新テーブルをCreate
↓
3.BULK INSERTを使用してCSVからデータを新テーブルへ流し込み
1.の段階で既存テーブルの列の中に「,(カンマ)」が含まれた列が存在し、列数のエラーでCSV出力が出来なかった為「二重引用符(char(34))」で囲ってCSV出力することで期待通りに出力が完了しました。
2.も新テーブルを作成するだけなので問題なく完了したのですが、
3.の段階で新テーブルにBULK INSERTを用いてINSERTを行った際に、カンマを含む文字列の行だけINSERTが失敗となってしまいました。
SQL
1BULK INSERT master.dbo.T_COMMENT 2FROM 'C:\Users\b3835\Desktop\移行用\comment.csv' 3WITH 4( 5 FIRSTROW = 2, -- 2行目からINSERT(ヘッダを含まない) 6 FIELDTERMINATOR = ',', -- カンマ区切り 7 CHECK_CONSTRAINTS, -- 制約チェック 8 KEEPIDENTITY -- ID値を維持 9)
表示されたエラーメッセージは
行 240、列 4 (COMMENT) の一括読み込みデータ変換エラー (切り捨て)。
です。
カンマを含まない文字列に関しては問題なくINSERTが出来ていたので、原因はカンマを含むことによる列数エラーではないかと思っています。
CSVからBULK INSERTをする際、カンマを含む文字列を希望の列へそのままINSERTするにはどのようにすればいいのでしょうか…。
また、上記工程で「ここはこうするといい」のようなアドバイスがあればお伺いできますと幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/16 00:16