【问题标题】:Import/Export only one table from a database to another [via PHP]仅将一个表从数据库导入/导出到另一个 [通过 PHP]
【发布时间】:2014-05-10 08:57:36
【问题描述】:

我只想从我的数据库中导出一个表,然后通过 PHP 将其导入另一个数据库,我尝试在 phpMyAdmin 中执行此操作,我从 .sql 中的 sql-1 导出(和 gzip)然后导入到 sql-2,但是当导出完成时,它只是给我一个空白页。所以我想通过 PHP 做到这一点。我有整个数据库的导出/导入代码,但我只想导入/导出一个特定的表。

这是我的代码:

导入:

<?php
//ENTER THE RELEVANT INFO BELOW
$mysqlDatabaseName ='db123456789';
$mysqlUserName ='dbo123456789';
$mysqlPassword ='yourPassword';
$mysqlHostName ='db1234.perfora.net';
$mysqlImportFilename ='yourMysqlBackupFile.sql';

//DO NOT EDIT BELOW THIS LINE
//Export the database and output the status to the page
$command='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' < ' .$mysqlImportFilename;
exec($command,$output=array(),$worked);
switch($worked){
case 0:
echo 'Import file <b>' .$mysqlImportFilename .'</b> successfully imported to database <b>' .$mysqlDatabaseName .'</b>';
break;
case 1:
echo 'There was an error during import. Please make sure the import file is saved in the same folder as this script and check your values:<br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr><tr><td>MySQL Import Filename:</td><td><b>' .$mysqlImportFilename .'</b></td></tr></table>';
break;
}
?>

导出:

<?php
//ENTER THE RELEVANT INFO BELOW
$mysqlDatabaseName ='db123456789';
$mysqlUserName ='dbo123456789';
$mysqlPassword ='myPassword';
$mysqlHostName ='db1234.perfora.net';
$mysqlExportPath ='chooseFilenameForBackup.sql';

//DO NOT EDIT BELOW THIS LINE
//Export the database and output the status to the page
$command='mysqldump --opt -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' > ~/' .$mysqlExportPath;
exec($command,$output=array(),$worked);
switch($worked){
case 0:
echo 'Database <b>' .$mysqlDatabaseName .'</b> successfully exported to <b>~/' .$mysqlExportPath .'</b>';
break;
case 1:
echo 'There was a warning during the export of <b>' .$mysqlDatabaseName .'</b> to <b>~/' .$mysqlExportPath .'</b>';
break;
case 2:
echo 'There was an error during export. Please check your values:<br/><br/><table><tr><td>MySQL Database Name:</td><td><b>' .$mysqlDatabaseName .'</b></td></tr><tr><td>MySQL User Name:</td><td><b>' .$mysqlUserName .'</b></td></tr><tr><td>MySQL Password:</td><td><b>NOTSHOWN</b></td></tr><tr><td>MySQL Host Name:</td><td><b>' .$mysqlHostName .'</b></td></tr></table>';
break;
}
?>

【问题讨论】:

  • 你必须在这一行下面编辑你的代码...
  • 我想不通。我不熟悉sql和php。
  • 这与 sql 或 php 关系不大。您正在配置 mysqldump 的命令行选项。我引用了手册中的第一行语法:shell> mysqldump [options] db_name [tbl_name ...]

标签: php mysql sql database phpmyadmin


【解决方案1】:

你为什么不直接使用 MySQL?

创建表 your_NEW_db_name.your_new_table_name LIKE your_db_name.your_old_table_name;

插入 your_NEW_db_name.your_new_table_name SELECT * FROM your_db_name.your_old_table_name;

【讨论】:

  • 嗯,这不是一个简单的表格,它包含数据。我应该先导出然后再导入,我怀疑这段代码会导出一个表然后我可以导入到新数据库。如果我错了,请告诉我。
  • 如果两个数据库在同一台服务器上并且可以由同一用户访问,它应该可以工作。请注意,您需要在查询中指向两个数据库 (your_NEW_db_name.your_new_table_name)
  • 我在上面的代码(答案)中看不到 your_NEW_db_name .. 它只是 new_table。毕竟,我测试了你的代码,它出错了。
  • 好的,我已经编辑过了...您应该将示例值替换为您的数据库名称和表名称。如果它不起作用,请尝试其他方法...
  • @SamuilBanti 你甚至可以在一个声明中做到这一点(如果你提到的要求已经给出):CREATE TABLE your_NEW_db_name.your_new_table_name SELECT * FROM your_db_name.your_old_table_name;
猜你喜欢
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多