INSERT文を使ってカンマがあるデータをDBに登録するにはどうしたらよいですか

解決


いまさら  2009-01-28 10:36:44  No: 101520  IP: 192.*.*.*

入力データにカンマがあります。カンマ区切りではありません。
このデータをINSERT文を使ってORACELデータベースに取り入れるにはどうしからよいですか。
例えば外国の住所の区切り、社名等にあるカンマ、 CO.,LTD等

編集 削除
魔界の仮面弁士  2009-01-28 10:57:44  No: 101521  IP: 192.*.*.*

それは、Oracle 系コミュニティ向きの話題なのでは?
VB の掲示板に投稿している割には、VB について全く触れていませんし。


> ORACELデータベースに取り入れるにはどうしからよいですか。

カンマがあろうと無かろうと、そのまま、
  INSERT INTO TBL1 (COL1, COL2) VALUES ('CO.,LTD', 'CO.,LTD.')
で良いのではないかと。

まぁ、パラメータ クエリを使った方が良いとは思いますが。

編集 削除
いまさら  2009-02-02 09:47:59  No: 101522  IP: 192.*.*.*

「魔界の仮面弁士」さま。言葉が足りませんでした。
要するにカンマデータは次の書きます。
input #file, fd1, fd2, fd3
INSEET INTO 〜 VALUE ('" & fd1 &"', '" & fd2 & "', '" & fd3 & "')
例えばfd2の項目にカンマデータがありますと桁がずれます。
このようなデータがある場合はINSERT文は使えませんか?
以下、ORACLEに関係することなので質問しずらいのですが
他の命令は処理スピードが遅いのでINSERT文にこだわったのです。
よろしくお願いします。

編集 削除
しんご  2009-02-02 10:35:00  No: 101523  IP: 192.*.*.*

いまさらさん

魔界の仮面弁士さんがおっしゃっているように
VBの話題ではないですので、Oracle系コミュニティーに
投稿された方がよいと思います。

しかるべきところに投稿された方が、
的確なアドバイスを受けられやすいですよ。

編集 削除
YuO  2009-02-02 10:57:17  No: 101524  IP: 192.*.*.*

疑うところが間違っています。
Input文で読み込んだ時にずれているのでしょう。
Input文はカンマ区切りで読み込む仕様です。

Line Input文で一行単位で読み込んで,InStr関数やMid関数を使って分割していくのがよいと思います。

編集 削除
魔界の仮面弁士  2009-02-02 11:12:09  No: 101525  IP: 192.*.*.*

> 例えばfd2の項目にカンマデータがありますと桁がずれます。
桁ズレは、データの入出力方法の問題では無いでしょうか。
Oracle を使っているかどうかは、関係の無い話かと思います。

また、最初の質問文にあるカンマというのは、
全角「,」であって(CO.,LTD)、
半角「,」では無かったはずです。

何が問題になっているのか、質問内容を整理しなおしてみてください。


> 例えばfd2の項目にカンマデータがありますと桁がずれます。
当方環境ではずれません。ファイルの作成方法を確認してください。

-------------------
Dim a As String, b As String, c As String, d As Long, e As Date
a = "CO.,LTD"
b = "CO.,LTD."
c = "12,345"
d = 12345
e = Now()

Open "C:\sample.txt" For Output As #100
Write #100, a, b, c, d, e
Close #100

Dim fd1 As String, fd2 As String, fd3 As String, fd4 As Long, fd5 As Date
Open "C:\sample.txt" For Input As #200
Input #200, fd1, fd2, fd3, fd4, fd5
Close #200

Debug.Print "fd1=[" & fd1 & "]"      'fd1=[CO.,LTD]
Debug.Print "fd2=[" & fd2 & "]"      'fd2=[CO.,LTD.]
Debug.Print "fd3=[" & fd3 & "]"      'fd3=[12,345]
Debug.Print "fd4=[" & fd4 & "]"      'fd4=[12345]
Debug.Print "fd5=[" & fd5 & "]"      'fd5=[2009/02/02 11:06:01]

'『"12,345",12345,"CO.,LTD","CO.,LTD.",#2009-02-02 11:06:01#
'』
Shell "notepad.exe C:\sample.txt", vbNormalFocus
-------------------

ちなみに、Input # ステートメントというのは、Write # ステートメントで
出力したデータの読み込みに使うものであって、Print # ステートメントで
書きこんだ物や、CSV ファイルの読み込みに使う物では無い事にも注意が必要です。

編集 削除
いまさら  2009-02-03 11:41:27  No: 101526  IP: 192.*.*.*

返事をくれた皆さんへ。
項目は"(ダブルコーティション)で囲まれていません。半角も全角も関係ありません。
"〜,〜"の場合に正常に作動します。
要するにカンマ付のデータはデータ上にあるカンマと区切りのカンマの区別がつきません。
当たり前ですね。
入力の形式を変更します。
どうもありがとうございました。

編集 削除