-1

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

?>
4

3 回答 3

2

尽量不要使用 mysqldump(它更像是一个管理/备份工具,据我所知只能导出整个表),但尝试使用带有 WHERE 子句的 SELECT 语句来读取数据。以您想要的文件格式导出它,例如 XML 或 CSV。要再次导入数据,请使用 DELETE 语句删除当前数据(也应用 WHERE 子句),并对输入文件中的每条记录使用 INSERT 语句。

于 2013-09-20T10:02:51.083 回答
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...
}
?>

这段代码是从我之前提供的链接中逐字提取的(我特别友善 - 绝大多数人不会给你一个链接,然后当你显然没有阅读它时仍然给你代码......) .

查询可以扩展到诸如'SELECT * FROM table WHERE ID=2'. 当然,你仍然可以在 PHP 中放入任何类型的 HTMLforloop来显示任何你想要的数据

于 2013-09-20T10:39:53.787 回答
0

如前所述,我不会使用mysqldump查询select。话虽如此,您可以按照 MySQL 文档中的说明添加--where语句mysqldump

mysqldump -t -u [username] -p[password] [database] [table] --where=[statement]

此外,您正在尝试将 .sql 文件保存在文档根目录中,您需要检查权限。然而,让 Apache 用户可写文档根目录并不是一个好主意。

于 2013-09-20T10:13:27.580 回答