使用PHP从数据库导出/导入一些数据

时间:2013-09-20 09:58:04

标签: php mysql xampp

我想从我的数据库导出和导入,包括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);

?>

3 个答案:

答案 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用户可以写入文档根目录并不是一个好主意。