質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

2332閲覧

ACCESSのデータをmysqlに自動移行するプログラムをVBで作成したくご協力いただければと思います。

ild161

総合スコア16

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/05/24 13:24

編集2018/05/24 15:20

ACCESSのテーブルデータをmysqlに自動移行するプログラムをVB.netで作成したいと思っております。

ACCESSとmysqlに同じテーブルを用意して、コピーできるようなことがしたいです。

データ件数と種類が多いので出来れば高速で動かればと思います。

環境の制約から
ACCESS VBAを使うことができず、
VB.netを用いて
ACCEESSテーブルデータを取得しmysqlにinsert?などを行いたいと思っております。

よろしければご教授いただけませんでしょうか?

「ねっとなどを検索して以下まではつくってみましたが、mysqlにデータがコピーできません」

'ACCESSデータ取得 Dim dAdp As OleDb.OleDbDataAdapter ' '''Dim dSet As DataSet = New DataSet("t_access_test_table") Dim dSet As DataSet = New DataSet Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=C:\testdata\data.accdb;") dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM access_test_data", cn) ' '''dAdp.Fill(dSet, "t_access_test_table") dAdp.Fill(dSet) 'mysqlコピー??? Dim cnn As New MySqlConnection("server=127.0.0.1;user id=test1;password=test1;database=test;SSL MODE=NONE") Dim mysql_table As String = "mysql_test_table" Dim cmdSelect As MySqlCommand = New MySqlCommand("Select * from `" + mysql_table + "`") cmdSelect.Connection = cnn MsgBox("3") Dim ad As New MySqlDataAdapter(cmdSelect) Dim cmdBuilder As New MySqlCommandBuilder(ad) Dim cmd As MySqlCommand = cmdBuilder.GetInsertCommand() ad.InsertCommand = cmd ad.Update(dSet) MsgBox("終了")

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2018/05/24 13:33

何が分からないのですか?
ild161

2018/05/24 13:39

申し訳ありません、言葉足らずでした。 ACCESSのデータをdatasetに入れるところまではできましたがそれをmysqlにコピーできずに困っております。
guest

回答2

0

自前でツールを作る前に、MySQLのGUIツールを使いAccessのデータを簡単にMySQLにインポートする方法 などを試してみましたか?

投稿2018/05/24 13:38

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ild161

2018/05/24 13:47

はい、当初はツールを使おうとしまたが、制約上使用できないためのVBとなります。
Orlofsky

2018/05/24 20:34

制約とは?掲示板を読んでいる人が理解できるように書いてください。 >SELECT * FROM access_test_data これ以外のテーブルはどうするの? 次のやり方の方が現実的では? AccessからMySQLへのデータ移行 https://www.atage.jp/archives/2220/
ild161

2018/05/26 04:52

言葉足らずで申しわけないです。 共用PCで他のアプリを入れることができない+OFFICEは入れれない (入っていない)ためです。 ACCESS VBAでするほうが楽なので本来ならそうしたいのですが、、、、
guest

0

ベストアンサー

コードを見る限り、まだまだという感じです。
accessとmysqlに接続して、accessのレコードセットをループしながら、mysqlにinsert。
それをテーブルの数だけ行う。
結構道のり長そうじゃありませんか?

同じレイアウトということであれば、accessのデータをcsvで出力して、mysqlでloadfileで取り込むのが、高速だし現状の状況でVB.NETでinsertまで行うよりは敷居が低いんじゃないかと思います。

VB.NETからAccessのCSVインポート機能を呼び出すクラス
(.Net).NetアプリケーションからAccess(MDB)のテーブルをExcelファイルにエクスポート

13.2.6 LOAD DATA INFILE 構文

投稿2018/05/24 15:37

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ild161

2018/05/26 04:50

ありがとうございます、データセットからデータ読み取りiまとめてnsertするプログラムにしました。 LOAD DATA INFILE はしらなかったので勉強させてもらいます。
ild161

2018/05/27 09:12

①VBからaccessのデータをTransferTextでcsvで出力してloadfileで取り込む ②VBからACCESS操作してODBCでmysqlに出力 ③VBからACCESSをデータセットで取り出してmysqlにマルチinsert ④VbからACCESSを配列/リストで取り出してmysqlにマルチinsert  ①~④全部作ってみましたが、私のケースでは①が一番よかったです(②は早かったのですが互換からエラーになるケースもありました。)ありがとうございます、勉強になりました。
sazi

2018/05/27 10:53

CSVで取り込む仕組みにしておくと、相手が変わっても取り込み用のCSVの整形にのみ注力できるので、拡張性もあると思います。 取り込んでから整形するか取り込み前に整形するかについては、取り込み後のほうが色々メリットがあると思っています。例えば他のデータを利用した処理も簡単になりますし。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問