1

1台のPC(WinXP)でMySQLサーバーを実行しています。

別のPC(WinXP)で、テーブルをcsvファイルにバックアップしたいので、c ++プログラムをMySQLデータベースに接続してから、次のようなコマンドを発行します。

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

データはエクスポートされているようですが、サーバー "c:\"ではPC:s "c:\"ではありません。プログラムがWindowsサービスとして実行されているため、LAN経由でデータをフェッチすることもできません。

この投稿を見たことがありますが、そのソリューションでは「FIELDSTERMINATEDBY」などを使用できないようです。

csvデータを離れたサーバーからローカルにエクスポートできますか、それとも最初にデータをローカルに移行する必要がありますか?

「解決済み」の問題:「単純な」方法では実行できないように思われるため、MySQLを使用してPCでサービスを実行し、DComサーバーに定期的にデータを他のPCに移動させます。

4

3 に答える 3

3

コメントを目的としています(ただし、コメントするのに十分な担当者ポイントがありません)。 インストールできるかどうかはわかりませんが、 cygwin + sqsh http://www.sqsh.org/sqsh_home.html)を使用してみてください。私はLinuxユーザーであり、sqshはデータベースからデータを取得するための優れたツールです。

于 2012-04-24T11:05:16.243 に答える
1

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

于 2012-04-24T12:55:46.717 に答える
0

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

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

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

于 2012-09-13T05:48:35.330 に答える