如何从CSV导出数据以便在mysql中使用PHP

时间:2014-08-02 10:20:21

标签: php mysql excel

我有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中读取此文件

2 个答案:

答案 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会在您执行命令的服务器上生成一个文件