- ベストアンサー
テキストに’の入っているデータをクエリーで処理したらエラーに..
テキストからMDBにデータを取込む際に、テキストの項目に、’(シングルフォーテーション)が入ってきて、INSERT文のクエリーで区切りが狂ってしまい、エラーが出てしまいます。 ’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ) が入ってきても対応できる良い手段(記述方法)はないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
だいぶ遅いので解決、対応済みかもしれませんが INSERTで、なくてレコードセットをして AddNewしてあげれば取り込めると思います。 しかし、パフォーマンスの面や、 取り込んだデータを利用する場合に INSERTやUPDATE、WHERE 条件に使用できない点があります。 以上のことを考えると、’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ)などは、最初から2バイト文字で作成してあげる か、データ上では2バイト文字で扱うを原則に、データベース設計を行い、 取込の際に念のため’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ)をチェックし 2バイト文字に変換してしまうのがいいと思います。
その他の回答 (2)
- sgh
- ベストアンサー率61% (75/121)
実はわたしもこれで苦労しました。 商品マスタを読み込む時に例えば商品名が「3.5"FDD」という商品が存在します。 これをやられたら、OUTです。 対策方法は、CSVに落とす側で、区切り方法を固定長や、タブ区切りを使うなど工夫ができるといいのですが... だめなら、エディタで直すか、マスタを書き換える方法しか思いつきません。
お礼
やはり苦労しましたか、会社の人にもいろいろきいたのですが、解決できなかったので質問いたしました。 やはりデータを直すしかないですかね... 御回答ありがとうございました。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
INSERT文で取り込めるテキストは、CSV形式です。 拡張子がCSVであればCSVファイルというわけではありません。 ファイルの形式が「何々区切り」というのが定義です。 区切りのパターンが多数あるのであれば、それはCSVファイルとは呼べません。 テキストファイルを作りなおすことをお薦めします。 1.ファイルを読む 2.Replace関数でシングルコーテをダブルコーテに変換する 3.ファイルを書き出す 4.テキストをインポートする(INSERT文の実行)
お礼
ちょっと質問の仕方が悪かったですね。 区切りのパターンが複数あるのではなく、テキストに何が入ってきても良いと言ういみです。すいません やはりテキストの作り直しですかね? Replace関数ですか?試してみます。 御回答ありがとうございました。
お礼
なるほど、addnewですか。 やはり後でデータを使えないと言うのはちょっとつらいですね。 結局取込の前にデータベースに入らないようにチェックを追加しました。 御回答ありがとうございました。