みなさんはじめまして
VB初心者です。
個人+仕事で色んなデータをエクセルに納めています。
そのデータ(CSV)をオラクルのデータベースに収めようと思っています。
その為データをオラクルに取り込むプログラムを作ろうと思っていますが、
その前段階として、CSVファイルを取り込みたいのですが、買った入門者
用の本にはそんな事がかかれていなくて、どのように取り込めばいいのかが
わかりません。大きな本屋で、それらしいものを探していましたが、見当た
らなかったです。(というよりわからなかったと言うのが正解です)
どのようにしてCSVファイルを取り込めばいいのでしょうか?
No.1
- 回答日時:
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' ファイルを閉じます。
No.2
- 回答日時:
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&プログラム初心者です。
データ自体は何十万件も超えるようなものではありませんが、友人から不要
になったオラクルを安く譲っていただけたので、オラクルを覚えるいい機会
だと言う事もあって、プログラムを作ろうと思いました。
とりあえずプログラム作成の良い参考になります。
どうもありがとうございました。
一応誤解のないように言っておきますが、あくまで個人でのプログラム作成です。
No.3
- 回答日時:
SQL*Loader は駄目なんでしょうか?
CSVをオラクルに取り込むという、そのものずばりなツールがオラクルには最初から入っています。
使い方はオラクルのオンラインヘルプで見れたはずですが、これはユーザーならみんな見れたんでしたっけ……。
No.4ベストアンサー
- 回答日時:
こんな感じです。
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の方が楽だと思いますよ。
どうも細かく書いていただきましてありがとうございます。
これだけ書かれていると、これに手を加えるだけでほぼ出来
てしまいますね!
一応これで作ってみようかと思います。
それでできた時にSQL*Loaderを使ってみたいと思います。
何事も勉強なので・・・
No.5
- 回答日時:
もう一つ。
うろ覚えで具体的に書けないのですが、VBに付属の
ISAM用のODBCドライバをド使うとCSV
ファイルをデータベースのように読めたような・・・。
いいかげんな情報でごめんなさい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- XML PHP.laravelについて 1 2023/07/06 15:26
- その他(プログラミング・Web制作) Accessの代わりのノンプログラムデータベース作成 4 2022/10/21 09:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++でファイルから複数行のデー...
-
文字列をカウントする方法
-
ファイル全てを .xlsm に変更し...
-
一定時間が経過したフォルダの削除
-
csvファイルの横方向への改行に...
-
while(<ハンドラ>) {} で行数を...
-
画像アップロード機能を追加し...
-
batファイルでrenameができませ...
-
while文がうまく動かない
-
VBAでCSVファイルの特定行を書...
-
MATLABのm-fileについて
-
配列のサイズを動的に拡張
-
ディレクトリのファイル作成を...
-
ANSI Cでファイル名、ディレク...
-
VB6.0でDB接続する際に切断時の...
-
Pythonの再帰関数の動作の流れ...
-
AutoCADのスクリプト
-
オープンしたファイルで行の連結
-
Perlで特定行から特定行までを...
-
連番のファイルを何個も開きたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルの作り方(CSV→...
-
C言語で特定の行を抽出する方法...
-
【エクセル】改行無しテキスト...
-
タブの色を変更する方法
-
Edge スクレイピング
-
全角と半角文字が混在している...
-
空白文字 \\f と\\v の違いに...
-
htaccessで特定のディレクトリ...
-
デルファイ TabControl タブの...
-
Arduino Excel
-
VBAでタブ区切りテキストの保存...
-
VBAのFileFormatで悩んでいるこ...
-
【Access2003】VBAでタブ区切り...
-
C++でファイルから複数行のデー...
-
テキストファイル(tsv)を改行...
-
PHPで掲示板を作りたいです
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
DOSコマンドで、標準出力を出力...
-
ExcelをCSV書き出す場合のシー...
おすすめ情報