13

如何使用 PHP 脚本中的 where 子句导出 MySQL 表的某些行?

我有一个 MySQL say 测试,我想使用 PHP 脚本为 id 介于 10 到 100 之间的行创建一个可导入的 .sql 文件。

我想创建一个 sql 文件说 test.sql 可以导入 MySQL 数据库。

我的代码:

$con=mysqli_connect("localhost", "root","","mydatabase");

$tableName  = 'test';
$backupFile = '/opt/lampp/htdocs/practices/phpTest/test.sql';
$query      = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName WHERE id BETWEEN 10 AND 500";

$result = mysqli_query($con,$query);

这会创建一个 test.sql 文件,但是当我尝试导入时,它会给出错误 #1064。
我的脚本只创建一个包含列名和表结构或插入查询的行的文件。

4

4 回答 4

16

如评论中所述,您可以通过以下方式使用 mysqldump 。

mysqldump --user=... --password=... --host=... DB_NAME --where=<YOUR CLAUSE> > /path/to/output/file.sql

如果您希望它出现在您的 php 文件中,您可以执行以下操作

exec('mysqldump --user=... --password=... --host=... DB_NAME --where=<YOUR CLAUSE> > /path/to/output/file.sql');
于 2013-03-08T05:36:43.420 回答
13

以非常简单的方式转到您的 phpMyAdmin 选择您要导出其特定行的数据库 单击“SQL”(在数据库上运行 SQL 查询/查询) 编写 sql 查询并执行它 就像 select * from test table limit 500 now what ever结果来了就在底部看到“查询结果操作”只需点击 导出

全部做完 :-)

于 2016-01-20T11:47:20.857 回答
2

Mysql Shell 命令

mysqldump -u user -p password -h host Database Table --where="Condition"> /path/exportFile.sql

例子

mysqldump -u user -p 123456 -h host Database Student --where="age > 10"> /path/exportFile.sql
于 2020-04-07T09:51:09.127 回答
1

如果您使用 OUTFILE 导出数据,则必须使用 INFILE COMMAND 导入它

$con=mysqli_connect("localhost", "root","","mydatabase");

$tableName  = 'test';
$backupFile = '/opt/lampp/htdocs/practices/phpTest/test.sql';
$query      = "LOAD DATA INFILE '$backupFile' INTO TABLE $tableName";

$result = mysqli_query($con,$query);

或者你可以使用

 $con=mysqli_connect("localhost", "root","","mydatabase");
 $tableName  = 'test';
 $backupFile = '/opt/lampp/htdocs/practices/phpTest/test.sql';
 $query      = 'SELECT * INTO OUTFILE '."'$backupFile'".'
                FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '.'\'"\'
                LINES TERMINATED BY \'\n\'
                FROM '.$tableName.' WHERE id BETWEEN 10 AND 500';

 $result = mysqli_query($con,$query);

然后导入这个文件。

希望这有效...

于 2013-03-08T05:38:05.870 回答