MySQL リファレンス【CSVファイルを出力する】

広告

広告

構文

最終更新
2006-08-30T00:00:00+09:00
この記事のURI参照
http://www.7key.jp/software/mysql_csv.html#how
SELECT * INTO OUTFILE '/tmp/sample.csv\'
         FIELDS TERMINATED BY ','
                ENCLOSED BY '"' 
                ESCAPED BY '\\'
         LINES TERMINATED BY '\r\n'

FROM table;
OUTFILE
出力ファイル名
FIELDS TERMINATED
フィールド区切り文字
FIELDS ENCLOSED
引用符
FIELDS ESCAPED
エスケープ記号
LINES TERMINATED
行終端文字

Perlでのサンプル

最終更新
2006-08-30T00:00:00+09:00
この記事のURI参照
http://www.7key.jp/software/mysql_csv.html#perl
#!/usr/perl

# 出力ファイルパス/名
my $file_csv  = "/tmp/sample.csv";
# データベース
my $ds        = "DBI:mysql:[databasename];host=localhost;port=/tmp/mysql.sock";
# データベース接続ユーザ名
my $user_name = "piyo";
# データベース接続パスワード
my $password  = "piyo";

use DBI;

$file_csv =~ /([^\/]+\.csv)/;
my $csv_name = $1;

# 既存ファイルの上書きは出来ないので事前に削除
if (-f "$file_csv"){unlink "$file_csv";}

# DBにDBI経由で接続
$db = DBI->connect($ds, $user_name, $password) || die "Got error $DBI::errstr when connecting to $ds\n";

# 指定場所にテキストファイルとして出力
$sth = $db->prepare("SELECT * INTO OUTFILE \'$file_csv\' FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' ".
                        "ESCAPED BY \'\\\\\' LINES TERMINATED BY \'\\r\\n\' FROM table");
$sth->execute;
$rc = $sth->finish;
$rc = $db->disconnect;

# 完成したテキストデータを標準出力/ダウンロード
print "Content-type: application/octet-stream\n";
print "Content-Disposition: attachment; filename=".$csv_name."\n\n";
if (-f "$file_csv") {
   if (open(FILE, "$file_csv")) {
       print <FILE>;
       close(FILE);
   }
}

exit(0);

広告

Copyright (C) 2006 七鍵 key@do.ai 初版:2006年08月30日 最終更新:2006年08月30日