これは状況です。私はphpMyAdminに入ってデータベースをバックアップした後、データベースを選択せずにエクスポートをクリックします。私は新鮮なMySQLのインストールにエクスポートしたSQLファイルをインポートしようとすると、(それはかなり長いですとして使用するペーストビン)今、私はphpMyAdminからエクスポートされたsqlファイルをインポートできません
を http://pastebin.com/vDHdG2T6のようなエラーを取得しています私はそれがINFORMATION_SCHEMAテーブルをスキップするだろうと私は代わりに、mysqldumpを使用している必要があります知っています。 これを解決する方法や、100万行のファイルを編集することなくそのファイルをインポートする方法はありますか?
私も似たファイルをインポートしようとしました: のmysql -uルート-p -f -h localhostの<ドキュメント/ localhost.sql をこれは、データベースをインポートしましたが、それらの多くは、テーブルとそのように行方不明、破損しました...私は-fを使ってエラーに関係なく続けるようにしました。
ありがとうございます!
EDIT:
は、私はあなたが正しい軌道に乗っていたと確信している、あなたの提案のためのみんなに感謝します。しかし、その間に私はバックアップファイルを混乱させたので、私は必要な行を抽出するために少しPHPコードを書く必要がありました。
$data = file_get_contents('import.sql');
if (! isset($_GET['db'])) {
//list databases
echo '<ul>';
preg_match_all("/Database: `(.*?)`/", $data, $dbs);
foreach ($dbs[1] as $database){
echo "<li><a href=\"index.php?db=$database\">$database</a></li>";
}
echo '</ul>';
} else {
$database = $_GET['db'];
//only get the queries for that db
$data = explode(PHP_EOL, $data);
$buffer = array();
$buffer_started = false;
foreach ($data as $key => $row){
if (preg_match("/Database: `.*?`/", $row) && $buffer_started) {
array_pop($buffer);
break;
}
if (preg_match("/Database: `$database`/", $row)) {
$buffer_started = true;
continue;
}
if ($buffer_started) {
array_push($buffer, $row);
}
unset($data[$key]);
}
echo '<textarea cols="128" rows="20">'.implode("\n", $buffer).'</textarea>';
}
保存し、このようにindex.phpと、それはファイルで見つかったデータベースをリストするだけでクリックしますと同じディレクトリにimport.sqlにあなたのSQLを置く: は、ここでは、誰かが同じ問題を抱えている場合であり、あなたが望むところであれば、それはテキストエリアにクエリを表示します。
幸運。
? – arnep
エクスポートを作成するときに、既存の構造を削除する場合は、インポート時に既存の構造/データをDBからクリアするドロップテーブルが選択されていることを確認します。既存の構造を失いたくない場合は、重複するエントリを防ぐために、各テーブルでテーブルを切り捨てる必要があります。 – RumpRanger
これはあなたのために働いたルートであれば、あなた自身の質問に答えて答えを受け入れることができます。 –