
VBでCSVデータをMDB
ACCESSがあれば簡単ですが、その環境が無い時用に
CSVデータをアクセス2000形式の.mdbに移すプログラムを作りたいと思いました。
Visual Basic 2010 Expressをダウンロードしてあります。
ネットで手法を検索してみましたが、これはというサイトを見つけられず
大きな本屋で関連書籍を探してみましたが、逆の方法は見つかるのですが
CSV→MDBは見つかりませんでした。
アドバイスや参考サイトなどありましたら
是非教えて頂きたいと思い質問しました。
宜しくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> ただ、Excel2003ではデータ件数が溢れてしまい
> 無理なようです。
> 使うデータは〒番号です。
EXCELのワークシートにのせる必要はありません。
MDBへの接続を確立(DAOでもADOでもお好きなほうで)
CSVファイルを単なる入力ファイルにして、EOFまでのループを作る。
ループ内で、項目分けしてレコード単位でテーブル書き込み。
入力ファイルのEOFでDBをクローズして終了。
「上記をVBAで書く」ということです。
No.3
- 回答日時:
>逆の方法は見つかるのですがCSV→MDBは見つかりませんでした。
逆の方法が見つかっているのであれば、それのFromとToを逆さにするだけです。
ただし単純なCSVしか、この方法では対応できません。
カンマ以外の区切り文字を使用したりする場合などは、「schema.ini」という定義を作成し、それから取り込む必要があります。
'http://blog.livedoor.jp/akf0/archives/51408939.h …
'http://homepage2.nifty.com/inform/vbdb/dao_expor …
Imports System.Data.OleDb
Module Module1
Sub Main()
Imp("C:\db1.mdb", "C:\Test\456.csv", True)
End Sub
Sub Imp(ByVal p_strMdbFile As String, ByVal p_strCsvFile As String, ByVal CSVの先頭はフィールド名 As Boolean)
'MDBへの接続
Using l_oleCnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & p_strMdbFile & ";")
l_oleCnn.Open()
Dim l_strHead As String = IIf(CSVの先頭はフィールド名, "YES", "NO")
Dim l_finf As New IO.FileInfo(p_strCsvFile)
Dim l_strTableCSV As String = String.Format("[Text;HDR={0};FMT=Delimited;DATABASE={1}].[{2}]", l_strHead, l_finf.Directory.FullName, l_finf.Name)
Dim l_strTableImp As String = IO.Path.GetFileNameWithoutExtension(l_finf.Name)
'テーブルの存在チェック
Dim l_strSQL As String
Dim l_strTables As DataTable = l_oleCnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
If (l_strTables.Select("TABLE_NAME='" & l_strTableImp & "'").Length > 0) Then
'データ追加
l_strSQL = String.Format("INSERT INTO [{0}] SELECT * FROM {1}", l_strTableImp, l_strTableCSV)
Else
'テーブル作成と追加
l_strSQL = String.Format("SELECT * INTO [{0}] FROM {1}", l_strTableImp, l_strTableCSV)
End If
'SQL文の発行
Using l_oleCmd As New OleDbCommand(l_strSQL, l_oleCnn)
l_oleCmd.ExecuteNonQuery()
End Using
l_oleCnn.Close()
End Using
End Sub
End Module
回答ありがとうございます。
SQLは書籍すら持っていないので全く分からりません。
ただ、書いた頂いたコードは何をするのかが何となくわかります。
fromとtoを逆にする方法も含めて、実際に自分でやって検証してみたいと思います。
No.2
- 回答日時:
データーベースはあまり詳しくはないのですが、私がサンプルを作った時に調べた限りでは、
VB.NET 系では、直接 mdb ファイルを作成する機能はないようです。
従って、ADOX の機能を使って、ADO.NET で作成するか又は、事前に mdb の空ファイルを用意して
おくとVB.NET の機能だけで作成する事ができます。
[VB2005 ADOX mdb] をキーに検索すればサンプルや参考文献が見つかるでしょう。
回答ありがとうございます。
空のmdbファイルを用意する方法は、何か行けそうな気がします。
こちらの手法で一度チャレンジしてみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(ACCESS)複数mdbからのデータ...
-
アクセス初心者に注意点を教え...
-
グループ単位にCSVファイル...
-
AccessからExcelファイルのデー...
-
エクセルからアクセスにインポ...
-
CSVデータの取り込み
-
ACCESS2000からEXCELファイルを...
-
ACCESS 2003では、テーブルのリ...
-
Accessの最適化について
-
リソースファイルとロケールに...
-
Accessの接続先をSQLサーバ...
-
アクセスとエクセルを行ったり...
-
既存のAccessのテーブルに空の...
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
ORA-00959: 表領域'****'は...
-
datapumpの実行方法について
-
oracleのプライマリ・キー名の変更
-
INDEXの無効化
-
ACCESS 複数テーブル・複数フィ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#でaccdbファイルのテーブルの...
-
エクセルからアクセスにインポ...
-
(ACCESS)複数mdbからのデータ...
-
ACCESS テーブルに2行目から取...
-
他ファイルのテーブルの情報を...
-
データ読込時のタイムアウト
-
テーブルのリンク(ACCESS)
-
Access2019でフォームから入力...
-
アクセス初心者に注意点を教え...
-
csvをSQLiteに取り込むと文字化...
-
ACCESSとエクセルのリン...
-
画面から入力した値がDBに登録...
-
アクセスマクロで、csv データ...
-
ACCESS 2003では、テーブルのリ...
-
VBでCSVデータをMDB
-
VBAでADOの質問です。かなり困...
-
ACCESS 指定のエクセルデータを...
-
VB2005 CSVファイルをテーブル...
-
困ってます。
-
[PG]AccessVBAでファイルのイン...
おすすめ情報