ひびこつ

へぼへぼエンジニアの雑多的で記録的なブログ

【SQLServer】BULK INSERTで「型の不一致または指定されたコードページでは無効な文字」が出るときは文字コードの可能性アリ

SQLServerでBULK INSERTをした際、

「型の不一致または指定されたコードページでは無効な文字」

のエラーが発生。

 

結論から言うと私のケースは文字コードが原因でした。

CSVExcelで編集すると0落ちやらでデータが破壊されるので、サクラエディタでちょろっと編集していたのですが、保存した際に文字コードが「UTF-8 BOM付き」になっていたようです。

 

レコードが日本語を含む場合は「SJIS」を指定して保存しないとダメみたいですね。当たり前といえば当たり前ですが、このエラー文からその結論にはなかなか結び付かないですね。

文字化けした結果カンマ等が生成され、勝手に区切りが入ったり文字数が超過したりしたんでしょうか。詳細まではわかりませんが、文字コードで治るケースもあるという話でした。大抵の原因は区切り文字の混入やデータ型の不整合みたいですけどね...。