0

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

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

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

$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);

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

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

编辑:澄清一下,我在过去的 2 个半小时里浏览了 google 和 stackoverflow 来寻找解决方案,并尝试了很多不同的方法,这并不好笑。它只是在我的脑海中结束了一个我无法理解的混乱,所以如果有人认为答案已经在这里,我深表歉意 - 到目前为止它对我没有用。

4

3 回答 3

0

将您的代码更改为

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

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

于 2013-05-10T15:12:10.750 回答
0

你可以只下载MysqlWorkbench,然后做

SELECT * FROM article_line

然后你会看到这样的按钮在此处输入图像描述

只需单击它,您将在那里拥有 csv 导出选项

于 2013-05-10T15:18:23.747 回答
0

我不知道你是否设法做到了,但我认为这个命令与 php.ini 有问题。也许对该文件的访问被拒绝。如果要在服务器主机以外的某个客户端主机上创建结果文件,则不能使用 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/

于 2013-05-11T15:28:18.307 回答