我有mysql表,其中我有content
列,它是文本格式的电子邮件回复。
现在我想导出到CSV以便在我的PHP程序中使用。
目前我已使用mysql -B
导出,我的文字结果如下所示
uid eid content
266466 30311650 can i reply plz
\n
\nthanks,
\n
\nPaul
\n
\n
\nOn Wed, Dec 18, 2013 at 2:41 PM,
\n
\n> contest "dfhfd".
\n>
\n>
\n
266466 30312072 john reply to mike
\n
\nholla yeah <b>bold me</b>
\n
\n
\nOn Wed, Dec 18, 2013 at 3:57 PM,
\n>
\n>
\n
现在我想在PHP中读取单独的行,但我不知道如何将记录分开,目前记录是分隔符,但我认为电子邮件中也可以有很多标签。
即使我也无法在MS Excel中读取此文件
答案 0 :(得分:0)
这就是我使用mysql获取CSV导出的方式。 希望这会对你有所帮助
$rows= mysql_query("SELECT email_id FROM table") or die mysql_error();
$headers= array('Email Id');
if ($fp && $rows) {
header('Content-Disposition: attachment; filename="export.csv"');
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
fputcsv($fp, $headers);
while ($row = mysql_fetch_array($rows)){
fputcsv($fp, array_values(array(''.$row['email_id'].'')));
}
readfile($filename);
die;
}
答案 1 :(得分:0)
而不是使用mysql -B
SELECT uid,eid,content
FROM myTable
INTO OUTFILE '/tmp/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
这只会在MySQL服务器文件系统上生成输出,如果您无法访问该服务器,那么您可以使用以下方法获得相同的结果:
mysql -u user -h host -ppassword -ss \
-e "SELECT uid,eid,content FROM myTable" mydatabase \
| sed 's/\t/","/g;s/^/"/;s/$/"/' > myOutputFile.csv
while会在您执行命令的服务器上生成一个文件