質問

テーブルからCSVにデータをエクスポートする必要があります。私は以下の構造を持っています(実際には私のテーブルではなくデモ目的のためのもの)

CREATE TABLE `mytable` (
  `id` int(11) DEFAULT NULL,
  `mycolumn` varchar(25) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
.

データ付き(約3000レコード)。今、私はこれらのレコードのいくつかをエクスポートしたい(cronjob経由で実行するスクリプトから)

SELECT * INTO OUTFILE '/tmp/mytable.sql'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM mytable;
.

表示:

Query OK, 3 rows affected (0.00 sec)
.

それから私はします:

ls: cannot access /tmp/mytable.sql: No such file or directory
.

私のファイルはどこですか?

役に立ちましたか?

解決

INTO OUTFILEコマンドを使用すると、クエリを実行しているものではなく、サーバーのローカルフォルダにデータをエクスポートします。

例:あなたはあなたのコンピュータ上にあります(IP:192.168.0.100)、mysqlコマンドを使用してMySQLServer(IP:192.168.0.101)に接続します.mysql -uuser -h192.168.0.101 -A databaseSELECT * INTO OUTFILEを実行することによって、ファイルはMySQLServer(IP:192.168.0.101)に保存され、コンピュータ上では保存されません(IP:192.168.0.100)。

今、CSVファイルを作成するスクリプトを使用することができます(CronJobの中に - すべてのデータを選択し、ファイルの生成し、SCP経由で他のサーバーに送信します)。

または - /shared/にNFSをマウントすることもでき、ファイルを自動的に他のサーバーに自動的に作成すると、

または - 最初のサーバーからこのようなbashスクリプトでmysqlコマンドを実行することはできます。

mysql -uroot test -B -e "select * from test.mytable;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /tmp/filename.csv
.

ソース:> http://tlug.dnho.net/node/209

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top