我有一个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或插入查询。
答案 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);
然后导入此文件。
希望这有效......