- ベストアンサー
CSVファイルの取り込み
みなさんはじめまして VB初心者です。 個人+仕事で色んなデータをエクセルに納めています。 そのデータ(CSV)をオラクルのデータベースに収めようと思っています。 その為データをオラクルに取り込むプログラムを作ろうと思っていますが、 その前段階として、CSVファイルを取り込みたいのですが、買った入門者 用の本にはそんな事がかかれていなくて、どのように取り込めばいいのかが わかりません。大きな本屋で、それらしいものを探していましたが、見当た らなかったです。(というよりわからなかったと言うのが正解です) どのようにしてCSVファイルを取り込めばいいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じです。 Private Sub Command1_Click() Const カラム数 As Long = 5 Dim iFno As Integer Dim sData(カラム数) As String Dim i As Long iFno = FreeFile() Open "e:\test.csv" For Input As iFno Do Until EOF(iFno) For i = 1 To カラム数 Input #iFno, sData(i) Next Loop Close iFno End Sub ただし、,の数が一定でないと駄目です。 上記の例では、5カラム。つまり「,]が4つですね。 "A,B"のように""囲まれたデータもちゃんとA,Bとして 読み込みますから、Line Inputを使うより、この方が簡単だと思います。 ですが、特に加工が必要でなければ、deagleがおっしゃるようにSQL*Loaderの方が楽だと思いますよ。
その他の回答 (4)
- arata
- ベストアンサー率49% (139/279)
もう一つ。 うろ覚えで具体的に書けないのですが、VBに付属の ISAM用のODBCドライバをド使うとCSV ファイルをデータベースのように読めたような・・・。 いいかげんな情報でごめんなさい。
SQL*Loader は駄目なんでしょうか? CSVをオラクルに取り込むという、そのものずばりなツールがオラクルには最初から入っています。 使い方はオラクルのオンラインヘルプで見れたはずですが、これはユーザーならみんな見れたんでしたっけ……。
お礼
VBのオンラインヘルプばかり見ていたので、家に帰ってか ら一度見てみます。 どうもありがとうございました。
- mnabe
- ベストアンサー率33% (427/1283)
VB初心者なのか、プログラムの初心者なのか判断出来ませんが、今は、プログラムの初心者と思ってか来ます。 VBの命令が解らないのなら、ご自分の理解出来るプログラム言語では"こういう命令がある”が、VBではどうやって書くのって聞いて下さい。その方が早いです。 プログラムの初心者って事で、ここではVBの話よりも、CSVデータの表現の事を書きます。 カンマ区切りデータで、『"』は文字列の表現に使用していると過程します。 簡単なアルゴリズムを書きます。後は、それをプログラムに落とせばOKです。仕事(特にオラクルって事は、個人ではないですよね...多分)でって事も考慮して、ここは無料のサポートセンターではないのですから...。 1.文字列の長さを調べる(Lengthコマンド) 2.長さが”0”なら終了(if又は、While文) 3.ループ(前記で、ifを使用している場合のみ。while文)4.文字列の1番最初が、「"」か判定する(ifとLeft) 5.真:一文字目を、格納用の変数に入れる 6. :次の「",」を探す。(Instr) 7. :結果:有:格納用変数に追加で入れる 8. :その文字以降の文字を検索文字列とする 9. 無:全部を格納用変数に入れる 10.偽:次の「,」を探す(以下、7~9と殆ど同じ) 11.文字列の長さを得る。 12.まだ文字列がある場合には、3から行う 13.これで、格納用変数に、CSVデータが入る事になる ここで注意。これでは、ただカンマ等のデータが抜けた事になるので、格納用変数には、配列を使用する等の手段を用いる必要がある。
お礼
説明が悪くてすいません。VB&プログラム初心者です。 データ自体は何十万件も超えるようなものではありませんが、友人から不要 になったオラクルを安く譲っていただけたので、オラクルを覚えるいい機会 だと言う事もあって、プログラムを作ろうと思いました。 とりあえずプログラム作成の良い参考になります。 どうもありがとうございました。 一応誤解のないように言っておきますが、あくまで個人でのプログラム作成です。
- gould09
- ベストアンサー率33% (196/589)
VBのオンラインヘルプですが、基本的なことは以下のサンプルでわかると思うます。 1.テキストファイルのオープン。(openを使用します。今回はテキスト用に開いて下さい。) 2.1行づつのデータの読みこみ。(Line Inputを使います。) 3.2の処理をファイルが終了するまで行ってください。 4.読みこんだテキストは、カンマ区切りのデータですので、テキストの編集処理を行い、必要なデータを取り出してください。 *********以下 オンラインヘルプ*********** 次の例は、Line Input # ステートメントを使って、シーケンシャル ファイルから 1 行ずつ読み込んで変数に代入しています。ファイル TESTFILE は、複数行のデータを含むテキスト ファイルと仮定します。 Dim TextLine Open "TESTFILE" For Input As #1 ' ファイルを開きます。 Do While Not EOF(1) ' ファイルの終端までループを繰り返します。 Line Input #1, TextLine ' 行を変数に読み込みます。 Debug.Print TextLine ' デバッグ ウィンドウに表示します。 Loop Close #1 ' ファイルを閉じます。
お礼
どうもありがとうございました。 大変参考になりました。
お礼
どうも細かく書いていただきましてありがとうございます。 これだけ書かれていると、これに手を加えるだけでほぼ出来 てしまいますね! 一応これで作ってみようかと思います。 それでできた時にSQL*Loaderを使ってみたいと思います。 何事も勉強なので・・・