エクセルからのMYSQLへの命令 – プログラミング – Home

エクセルからのMYSQLへの命令
 
通知
すべてクリア

[解決済] エクセルからのMYSQLへの命令


一年生
 一年生
(@一年生)
ゲスト
結合: 18年前
投稿: 37
Topic starter  

皆様のお力をお貸しください。

今エクセルからボタン操作でMYSQLへの命令を実行するものを作成しています。
何とか

・エクセルからMYSQLへのデータ入力
 テーブル作成・レコード入力・テーブル削除等
・txtデータをエクセルに取込

まではできたんですが

・エクセルからMYSQLへデータを外部出力する命令

を実行できません。

MYSQLでは

select from test into outfile c:/vb/test1.txt fields terminated by ',';

で外部出力されるのでこの命令文をVBE上で

sql = select from test1 into outfile
sql = sql & "c:/vb/test1.txt fields
sql = sql & terminated by ',';

で"c:~となってエラーとなります。
変数にいれてみたりと色々ためしましたがわかりません。
MYSQLでの命令がなのでそれをはずすことはできないと思うのですが、
VBEでは文字は"で囲むようになっていますし・・・。
よい方法があったら教えてください。
お願いいたします。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

を~の中に書く場合は " としてあげます。(C言語の\のようなもん)

MsgBox 私の名前は "Blue" です。


返信引用
一年生
 一年生
(@一年生)
ゲスト
結合: 18年前
投稿: 37
Topic starter  

ありがとうございます!!
早速試してみたところエラーもでませんでした!
でも実行しようとすると

Private Sub CommandButton5_Click()

'** MYSQLからの外部出力

Dim cn As Variant
Dim sql As String

'** ODBC 接続
Set cn = CreateObject(ADODB.Connection)
cn.Open dsn=MySQL;uid=**;pwd=***
cn.CursorLocation = 3

'** 外部出力

sql = select from test1 into outfile
sql = sql & "c:/vb/test1_1.txt" fields
sql = sql & terminated by ',';

cn.Execute sql

'** ODBC 接続解除
cn.Close

End Sub

'-2147217865(80040e37)'オートメーションエラーとなりました。
上記ソースで間違っているところはどこでしょうか?
教えてください。お願いします。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> select from test1 into outfile c:/vb/test1_1.txt fields terminated by ',';
これって、SQL文あっていますか?(SELECTの後にいきなりFROMっていけったっけ?)
ADO関係なしに実行できるかテストしてみてください。

参考)
MySQL 4.1 リファレンスマニュアル :: 6 MySQL SQL言語リファレンス :: 6.4 データの
操作: SELECT、INSERT、UPDATE、DELETE :: 6.4.1 SELECT 構文
http://dev.mysql.com/doc/refman/4.1/ja/select.html


返信引用
一年生
 一年生
(@一年生)
ゲスト
結合: 18年前
投稿: 37
Topic starter  

すいませんっ!!
*が抜けてました!!

sql = select * from car into outfile "c:/vb/test1_1.txt" fields terminated
by ',';

で1行でかくと成功しました!
行をわけて

sql = select * from car into outfile
sql = sql & "c:/vb/test1_1.txt" fields
sql = sql & terminated by ',';

とするとエラーになります。

"b"a

というようにが三連続になるとちゃんと読込んでくれないんでしょうか?

a"bb"a

のようにしないと?

ひつひとつ考えて質問もまとめてきますので、今後もよろしくお願いいたします!
ありがとうございました!!
解決です!


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

普通に空白がないからなのでは?
>sql = select * from car into outfile
>sql = sql & "c:/vb/test1_1.txt" fields
>sql = sql & terminated by ',';
だと、

select * from car into outfilec:/vb/test1_1.txt filedsterminated by ',';

ですよね?

いろいろ検索してみてたけど、その構文でもいけるんだ。
sql = SELECT * INTO OUTFILE "C:/vb/test1_1.txt" FILEDS FIELDS TERMINATED
BY ',' FROM car;
かなぁとおもった。


返信引用
一年生
 一年生
(@一年生)
ゲスト
結合: 18年前
投稿: 37
Topic starter  

FILEDS FIELDS

とかくのもあるんですね。
まだまだ奥が深いんですね!
ほんとにありがとうございます!

空白についてですが、

sql = select * from car into outfile
sql = sql & "c:/vb/test1_1.txt" fields
sql = sql & terminated by ',';

とか

"c:/vb/test1_1.txt" fields

としてみたり色々試したんですが、だめでした。
何でなんでしょうね・・・。

いけると思ったんですけど・・・。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

あ、だだの間違いです。
詳しくは先のリンクみてください。
# 最後のほうにあったの参考にしたから。

連結でダメになるとは考えにくいです。
Executeの前でメッセージボックスかなんかで確認してみてはどうでしょうか?


返信引用
一年生
 一年生
(@一年生)
ゲスト
結合: 18年前
投稿: 37
Topic starter  

ありがとうございます。
確認してみます。

時間がかかるとは思いますが、確認してみます!!

本当にいつもありがとうございます。

疑問点が解決して助かっています!!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました