プロが教える店舗&オフィスのセキュリティ対策術

BULK INSERTについて、
CSVをバルクインサートでテーブルにBULK INSERTする際に、
テーブルのカラム設定はNull許容しないように設定しているにも関わらず、

CSV内の空文字は実行後にNULLで登録されてしまいます。
やりたいことはCSVデータにNULLがあった場合は、インサートできないようにしたいです。
設定方法はないでしょうか。ご教授くださいますよう宜しくお願いします

A 回答 (1件)

SQL Server は全然詳しくありませんが・・・



https://docs.microsoft.com/ja-jp/sql/t-sql/state …

CHECK_CONSTRAINTS
> UNIQUE および PRIMARY KEY 制約は常に適用されます。 NOT NULL 制約で定義された文字型列にイ
> ンポートする場合、テキスト ファイルに値がなければ BULK INSERT は空白文字列を挿入します。

KEEPNULLS
> 一括インポート操作時、空の列が挿入される場合は NULL 値が保持されます。その列の既定値は格納さ
> れません。 詳細については、「一括インポート中の NULL の保持または既定値の使用 (SQL Server)」
> をご覧ください。

一括インポート中の NULL の保持または既定値の使用 (SQL Server)
https://docs.microsoft.com/ja-jp/sql/relational- …

これを見る限りでは、以下の2パターンを試してみる価値がありそうです。
 ・CHECK_CONSTRAINTS、KEEPNULLS オプションの併用を利用してみる。
 ・列の既定値を設定する。

どうしてもムリなようなら、取り込む前にCSVを加工するという手段も取れると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
CHECK_CONSTRAINTSを試しましたが、やはり、聞かないようで、Nullが登録されてしまいました。
if文で判断するしかないかなと。。。

お礼日時:2018/07/13 09:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A