我想将两个表从我的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寻找解决方案,并尝试了很多不同的方式,这是不好笑。这只是让我无法理解的混乱,如果有人认为答案已经存在,那么道歉 - 到目前为止它对我没用。
答案 0 :(得分:0)
将您的代码更改为
mysql_query($exportArticle) or die(mysql_error());
这将让您了解执行查询时是否有任何错误。如果您不在mysql_query
上执行错误处理,即使出现错误,它也会继续执行下一个语句。
答案 1 :(得分:0)
答案 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/