2012-04-24 12 views
1

私は、1台のPC(WinXP)上で動作するMySQLサーバを持っています。別のPC(WinXPの)オン遠隔のMySQLサーバから.csvデータをローカルにエクスポートする

、私はCを持っているので、csvファイルへのバックアップテーブルは++プログラムは、MySQLデータベースに接続し、その後、私は、このようなコマンドを発行したいと思います:

SELECT data FROM table WHERE something=ABC 
INTO OUTFILE c\tmp.txt 
FIELDS TERMINATED BY ';' 
OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ";"; 

データを私のPC上ではなく、サーバ "c:\"上にエクスポートされたようです:s "c:\"。 プログラムがWindowsサービスとして実行されている場合でも、LAN経由でデータを取得できません。

私はthis postを見ましたが、その解決策では「FIELDS TERMINATED BY」などは使用できないようです。

遠方のサーバーからローカルにcsvデータをエクスポートすることはできますか?まずデータをローカルに移行する必要がありますか?

問題:「シンプルな」方法ではできないようですが、私はMySQLでPC上でサービスを実行し、DComサーバーに定期的にデータを他のPCに移動させます。

+0

なぜmysqldumpでバックアップしないのですか?なぜcsvsですか?ダンプはあなたが望むもののためのものです。また、これはC++よりもPythonのような豊富なスクリプト言語ではるかに簡単です。 –

+0

私はすでに(mysqldump-ing)していますが、うまくいきますが、人間が読むことができるバージョンも必要です。 Pythonの質問については、私はスクリプト言語にアクセスすることができず、Windowsサービスとしてプログラムを実装する必要があります。 – Valmond

+1

窓が大好き! :) –

答えて

3

コメントすることを意図していますが(私はコメントするのに十分な担当者ポイントがありません)。あなたが物事をインストールできるかどうかは分かりませんが、cygwin + sqshhttp://www.sqsh.org/sqsh_home.html)を試してみてください。私はLinuxのユーザーであり、sqshはデータベースからデータを取得するための素晴らしいツールです。

+0

まあ、私は間違いなくcygwinをインストールすることはできませんが、sqshがそれなしで動作する場合でも、それは私の問題を解決するだろうか? ps。 +1のためにコメントする+1; – Valmond

+0

@Valmond thx残念ながら、私はあなたがcygwinなしでsqshを実行する方法を知らない:-(あなたは、あなたが望むCSV形式にそれを得るために出力のいくつかの追加のフォーマットをしなければならないでしょう。 markalexanderbain.suite101.com/using-a-mysql-databases-with-c-a70097が役に立つかもしれません... – Scottymac

1

SELECT ... INTO OUTFILEは明らかにmysql-demonのローカルファイルシステムにファイルを書き込みます。 1つのオプションは、クライアントPCのディレクトリを共有し、サーバー上で開き、outfile-optionにそのパスを使用することです。これがオプションではない場合は、C++プログラムのデータを選択し、ローカルのcsvファイルに手動で書き込む必要があります。

+0

あなたが言うように、私はそのようにすることはできません(サービスはローカルでしか書くことができません)。 – Valmond

0

extraをインストールしない場合は、次のコマンドを使用します。

mysql -h remotedb.db -u ident -p -B -e "your query ;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > localfile.csv 

-Bは、出力をタブで区切ることを意味します。

関連する問題