我想从我的数据库导出和导入,包括WHERE子句,以导出一些数据而不是全部(例如:导出numberID = 25的所有数据表)。那么,有可能这样做吗?而且,如果有可能,我如何导入这些数据?删除以前的第一个数据?
我试图从我的数据库中导出它们,但它不起作用:我做错了什么?我正在使用XAMPP。谢谢大家!
<?php
//ENTER THE RELEVANT INFO BELOW
$mysqlDatabaseName ='myDatabase';
$mysqlUserName ='myUser';
$mysqlPassword ='myPass';
$mysqlExportPath =$_SERVER['DOCUMENT_ROOT'] . '/backup.sql';
$mysqlHostName ='localhost';
$command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ' .$mysqlExportPath;
exec($command);
?>
答案 0 :(得分:2)
尽量不要使用mysqldump(它更像是一个管理/备份工具,据我所知只能导出整个表),但尝试使用带有WHERE子句的SELECT语句来读取数据。以您希望的文件格式导出,例如XML或者CSV。要再次导入数据,请使用DELETE语句删除当前数据(也应用WHERE子句),并对输入文件中的每条记录使用INSERT语句。
答案 1 :(得分:1)
如果你有一个表格,如
ID | COL1 | COL 2
-----------------
1 | A1 | A2
2 | B1 | B2
使用以下PHP代码显示整个表
<?php
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
foreach($db->query('SELECT * FROM table') as $row) {
echo $row['field1'].' '.$row['field2']; //etc...
}
?>
此代码从我之前提供的链接中获取 ad verbatim (我特别友善 - 绝大多数人都不会给你链接,然后当你明显没有阅读时它仍然给你代码......)。
查询可以扩展为'SELECT * FROM table WHERE ID=2'
之类的内容。当然,您仍然可以在PHP forloop
中放置任何类型的HTML来显示您想要的数据
答案 2 :(得分:0)
如前所述,我不会使用mysqldump
而是使用select
查询。
尽管如此,您可以按MySQL Documentation
--where
添加mysqldump
语句
mysqldump -t -u [username] -p[password] [database] [table] --where=[statement]
此外,您正在尝试将.sql文件保存在文档根目录中,您需要检查权限。但是,Apache用户可以写入文档根目录并不是一个好主意。