MYSQL转储整个数据库并忽略QUERY

时间:2012-03-15 19:27:12

标签: php mysql mysqldump

我正在使用这个PHP代码将一个列从MYSQL表转储到一个文本文件中,但它最终要么不转储数据,要么转发整个数据库而不是确认SQL语句而只转储该列中的数据本身。我做错了什么?

$file = 'file.txt';
if(is_file($file))
    unlink($file);      
$sql = 'SELECT column FROM table';

我试过不同的命令行, 以下行:
$cmd = 'mysqldump --user=xxx --host=localhost --password=xxx mydatabase \''.$sql.'\' > '.$file;

转储一组文本,例如,

    -- Server version   5.0.95-community   
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

这一行将整个数据库转储到文件中:

$cmd = 'mysqldump --user=xxx --password=xxx --host=localhost mydatabase > file.txt';
exec($cmd);

我知道上面这行我实际上并没有查询数据库,但这是我需要帮助的部分。

5 个答案:

答案 0 :(得分:1)

我不记得mysqldump曾经将查询视为一种选择。

也许只是..运行查询?

答案 1 :(得分:0)

我建议设置连接,运行查询fopen('file.txt', 'w'),然后遍历查询结果并fwrite发送文件。

也许是这样的......当然你的连接字符串会有所不同。我没有对它进行测试,因此我会在制作之前仔细检查所有内容。

$conn = mysql_connect('localhost', 'mysql_user', 'mysql_password');

if (!$conn) {
    die('Could not connect: ' . mysql_error());
}


$file = 'file.txt'; 

$sql = 'SELECT column FROM table'; 

$results = mysql_query($sql , $conn);

$fh = fopen($file, 'w');
foreach($results as $line){
    fwrite($fh, $line);
}

fclose($fh);
mysql_close($link);

答案 2 :(得分:0)

使用mysql客户端使用自定义查询而不是mysqldump:

$cmd = 'mysql --user=xxx --password=xxx --host=localhost --skip-column-names mydatabase -e \"SELECT column FROM table\" > file.txt';
exec($cmd);

答案 3 :(得分:0)

你几乎在那里添加-w选项然后从你的select的where子句中添加条件,例如:

mysqldump -uroot -p  dbname tablename -w "id > 100 and income > 2000;" > output.txt

答案 4 :(得分:0)

我想通了一个自定义命令行user built for a similar issue

所以现在我有:

$cmd = "mysql --user=xxx --password=xxx --host=localhost --database=xxx --execute='SELECT `column` FROM Table LIMIT 0, 10000 '> file.txt";
exec($cmd);

这正是我所需要的。唯一的问题是它不能在XAMPP上运行,只能在我的Web服务器上运行。也许需要解决一些问题。感谢那些提供代码的人。