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

こんばんは。
お世話になります。
SQL Server初心者です。

現在、CSVファイルに出力された他のデータベース(Paradox)のデータをSQL Server2005に移行するためのツールを作成しています。

Paradoxでは、以下のように、(1)と(2)のレコードが存在した場合、重複エラーとならなかったのですが、SQL Serverでは、当然ながら、重複エラーとなってしまいます。
 (1)aaaaa, 1, あいうえお
 (2)AAAAA, 1, かきくけこ
 ※aaaaaとAAAAAが主キーの場合

CSVファイルのレコードは、多いもので700万件も含まれ、これを1行読み込み、既存データか否かをチェックし、既存の場合はINSERTしないという処理を700万回繰り返すと、相当な時間がかかり、性能向上を求められています。

そのため、BULK INSERTを使用する方向で検討してみました。

しかし、CSVファイルに主キー重複したレコードが存在すると、エラーが返されますが、BULK INSERTでは、どのレコードでエラーになったかまでは取得することができません。

ずいぶん、調べてみたのですが、無理のようでした。

BULK INSERTでエラーとなる箇所を特定する方法は本当にないでしょうか?
もし、無理ならば、何か他にエラー箇所を特定して速くINSERTするコマンド、方法はないでしょうか?

お知恵をお借りしたく、よろしくお願いいたします。

A 回答 (1件)

aaaとAAAを区別したいなら。

データベースの照合順序を変えてみると
エラーなしで処理できるかもしれません。照合順序はシステムレベル・データベースレベル・テーブルレベルで設定できます。初期設定では
osの設定を引き継ぎます(この場合大文字小文字を区別しない)。paradoxで正常であれば問題なくinsertできるはず・・・
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございます!

照合順序の変更を行って問題ないかを確認してみます。
まず、今から試してみます。

お礼日時:2007/12/20 14:20

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

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

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