Php MySQL转储为CSV

Php MySQL转储为CSV,php,mysql,Php,Mysql,我环顾四周,似乎什么都不管用: $file = '/path/to/file.csv'; $cmd = 'mysqldump DATABASE TABLE > '.$file.' --host=localhost --user=USER --password=PASS'; $cmd .= ' --lock-tables=false --no-create-info --tab=/tmp --fields-terminated-by=\',\''; exec($cmd); 我尝试的所有操作

我环顾四周,似乎什么都不管用:

$file = '/path/to/file.csv';
$cmd = 'mysqldump DATABASE TABLE > '.$file.' --host=localhost --user=USER --password=PASS';
$cmd .= ' --lock-tables=false --no-create-info --tab=/tmp --fields-terminated-by=\',\'';
exec($cmd);

我尝试的所有操作都会创建一个空的CSV文件。有什么想法吗?非常感谢。

试试SQLYog,它的工作方式很有魅力

这里有一个免费社区版的下载链接

然后你所要做的就是右键点击有问题的表格,然后去导出,选择CSV等等

如果要查找代码如何执行,请在导出表后查看历史记录选项卡,查看执行了哪些代码。

执行时会发生什么: mysqldump数据库表>/path/to/file.csv[从命令行剪切命令的其余部分]

它有用吗

您的最后一行请尝试:

$cmd .= " --lock-tables=false --no-create-info --tab=/tmp --fields-terminated-by=','";

单引号不会在单引号字符串中转义。

我找到了通过命令行使用mysql实现这一点的方法--


'.$file.
重定向应该是命令的最后(或第一)部分

@clazzy的答案是我找到的最好的纯PHP解决方案
        $file = '/path/to/file.csv';
        if(is_file($file))
            unlink($file);      
        $sql = 'SELECT * FROM database.table';
        $cmd = 'mysql --host=localhost --user=USER --password=PASS --quick -e \''.$sql.'\' > '.$file;
        exec($cmd);