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

时间:2013-03-08 05:24:48

标签: php mysql phpmyadmin

我有一个mysql表说测试,我想使用php脚本为id在10到100之间的行创建一个可导入的.sql文件。

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

mycode的:

$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 我的脚本只创建一个文件,其中的行包含列名和表sturcute或插入查询。

4 个答案:

答案 0 :(得分:13)

如评论中所述,您可以通过以下方式使用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');

答案 1 :(得分:8)

以非常简单的方式转到phpMyAdmin 选择要导出其特定行的数据库 点击&#34; SQL&#34; (在数据库上运行SQL查询/查询) 编写SQL查询并执行它 就像选择*从测试表限制500现在什么结果来 在底部看到&#34;查询结果操作&#34; 只需点击导出

即可

全部完成: - )

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果您使用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);

或者您可以使用

制作csv文件
 $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);

然后导入此文件。

希望这有效......