因此我使用以下命令从表中导出了部分数据:
<?php
$con = mysqli_connect('localhost','root','','database');
$sql = "SELECT * INTO OUTFILE 'data.sql' FROM table WHERE PID<50";
mysqli_query($con, $sql);
mysqli_close($con);
?>
导出成功,我的目录中有一个“data.sql”文件,内容正是我选择的(PID从1到49的数据)。然而,每当我尝试使用 phpmyadmin 将其导入到不同数据库中具有相同名称、相同列的新表时,它总是显示错误
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
完整错误消息:
SQL查询:
2 奥斯汀·本尼迪克特·特里桑托 002 240000 2015-07-01 1970-01-01\N 20000 4
3 法伊丽莎·赛玛 001 120000 2015-07-01\N\N 0 2
4 蒂亚拉· Aurelia ·普拉塞蒂奥 003 230000 2015-07-01 1970-01-01\N 0 2
5 达雷尔·马克西米利安·迪甘塔拉 004 210000 2015-07-01 1970-01-01\N 0 2
6 米凯拉·雷瓦·卡里斯塔 005 210000 2015-07-01 1970-01-01\N 0 2
7 吉塞拉·乔赛琳·田·西巴拉尼 006 220000 2015-07-01 1970-01-01\N 15000 3
8 普图·普贾·西塔·拉蒂西亚 007 230000 2015-07-01 1970-01-01\N 0 2
9 米哈埃尔·卢修斯·阿卡南塔·普拉马 008 230000 2015-07-01 1970-01-01\N 0 2
MySQL 说:文档
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '2 Austin Benedict Trisanto 002 240000 2015-07-01 1970-01-01\N 20000 4
附近使用的正确语法第 1 行 3 Faylish
究竟出了什么问题?或者我做错了什么?我也应该使用 php 将其导入回来吗?
非常欢迎所有答案。预先感谢您。
最佳答案
您要导入的内容不是 SQL 格式。
此外,我从来没有运气好通过 PHP
和 phpMyAdmin
运行它。
我只是以这种方式回答这个问题,因为这是我备份和恢复数据库的首选方法。
注意您必须拥有此方法的 shell 访问权限。
备份数据库。使用以下内容:
$ mysqldump -u UserName -p PassWord your_database > /directory/backup_file.sql
或者您可以使用mysql
cli
输出查询:
$ mysql -e "select * from yourTable" -u userName -p passWord YourDataBase > /directory/backup_file.sql
要将文件导入到新数据库:
$ mysql -u userName -p passWord newDatabase < /directory/backup_file.sql
通过导入,您不必指定表,因为它将存储在 sql
文件中。
可能不是您所希望的,但这是使用 PHP 执行此操作的有效替代方案。事实上,它是首选方法,因为它快速、简单、可靠且有效。除了所需的 SQL
查询之外,无需任何代码。更少的代码 = 更少的破坏机会。
关于php - MySql 部分导出数据,无法导入回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34961359/