在本地将MySQL表导出到csv

时间:2013-05-10 14:42:15

标签: php sql csv export

我想将两个表从我的mysql服务器导出到网络服务器上的csv文件。

mysql和webserver都在同一台机器上运行,并且不会面向Web。它只是一个小型的webapp来自动执行我定期执行的任务,因此安全性不是问题。

我尝试的方式,这绝对是理想的,但没有奏效的是:

$exportArticle = 'SELECT *
INTO OUTFILE "article_line.csv"
FIELDS TERMINATED BY ","
ENCLOSED BY "\""
ESCAPED BY "\\"
LINES TERMINATED BY "\\n\\r"
FROM article_line';

然后在我的脚本中调用它:

mysql_query($exportArticle);

但不幸的是,这并没有写任何东西(不过也不会出错。)

如果有人可以帮助我,那就太好了!感谢

编辑:只是为了澄清,我花了最近两个半小时浏览谷歌和stackoverflow寻找解决方案,并尝试了很多不同的方式,这是不好笑。这只是让我无法理解的混乱,如果有人认为答案已经存在,那么道歉 - 到目前为止它对我没用。

3 个答案:

答案 0 :(得分:0)

将您的代码更改为

mysql_query($exportArticle) or die(mysql_error());

这将让您了解执行查询时是否有任何错误。如果您不在mysql_query上执行错误处理,即使出现错误,它也会继续执行下一个语句。

答案 1 :(得分:0)

您可以下载MysqlWorkbench,然后点击

SELECT * FROM article_line

然后你会看到一个像enter image description here

这样的按钮

只需点击它就可以在那里找到csv导出选项

答案 2 :(得分:0)

我不知道你是否设法做到了,但我认为这个命令有问题。 也许拒绝访问该文件。如果要在服务器主机以外的某个客户端主机上创建生成的文件,则不能使用SELECT ... INTO OUTFILE。

http://dev.mysql.com/doc/refman/5.0/en/select.html

你可以使用这样的东西。

function sqlQueryToCSV($filename, $query) {
        $result = mysql_query($query);
        $num_fields = mysql_num_fields($result);
        $headers = array();
        for ($i = 0; $i < $num_fields; $i++) {
                $headers[] = mysql_field_name($result , $i);
        }
        $fp = fopen(mysql_real_escape_string(getcwd().'\\'.$filename), 'w');
        if ($fp) {  fputcsv($fp, $headers);  while ($row = mysql_fetch_array($result)) {
         $arrayValues = array();
         foreach ($headers as $header)
         {
             $arrayValues[] = $row[$header];
         }
         fputcsv($fp, $arrayValues);  }
        }
        fclose($fp); }

来源:http://forums.exchangecore.com/topic/907-function-to-convert-mysql-query-to-csv-file-with-php/