Intereting Posts
Как преобразовать записи в таблицу в xml-формат в PHP? PHP_INT_SIZE возвращает 4, но моя операционная система 64-битная Массив массива PHP, включая ключи Запрос обновления MySQL обновляет один столбец, но не другой столбец Prestashop: добавьте индивидуальный продукт в корзину Планировщик Laravel запускается дважды Ежедневно в определенные часы Лучший способ уничтожить объект PHP? как отобразить всех пользователей в таблицах пользователей в таблице моих объектов в представлении add.ctp Преобразование php для преобразования отношения «один ко многим» к вложенным массивам Влиять на безопасность Laravel 5 при изменении структуры папок для удаления общей папки Форма обратной связи PHP SMTP Mail php regex – найти строчную строку с номером и пробелами в тексте Передача объекта в массив – странное поведение Вызовите веб-службу Python с помощью PHP Какая лучшая библиотека создает текстовое поле с автоматическим предложением AJAX в виде веб-формы?

PHP / MySQL: копировать таблицу и данные из одной базы данных в другую

Anoter question: Каков наилучший способ скопировать всю таблицу из одной базы данных, не используя что-то вроде этого:

CREATE TABLE DB2.USER SELECT * FROM DB1.USER; 

Это не работает, потому что я не могу использовать данные из двух баз данных одновременно. Поэтому я решил сделать это с помощью php. Там мне нужно было кэшировать все данные, а затем создать таблицу в другой БД.

Но теперь – каков был бы самый быстрый способ кэширования данных? Я думаю, что каждый раз было меньше 1000 записей за стол.

Спасибо за ваш вклад

Экспортируйте его в файл .sql и импортируйте в новую базу данных.

В phpMyAdmin щелкните базу данных, которую хотите экспортировать, нажмите « Экспорт» , выберите « Сохранить как файл» , затем откройте .

Затем загрузите его в новую базу данных, в которую вы хотите дублировать данные.


В строгом смысле PHP единственный способ, которым я мог бы подумать, это использовать SHOW TABLES и describe {$table} чтобы вернуть все имена полей и структуры записей, проанализировать их, создать свои инструкции create table , затем прокрутите каждую таблицу и создайте insert .

Я боюсь, что лучшее, что я могу сделать для вас, это своего рода прототип кода, который, как я мог бы предположить, был бы невероятно насыщен сервером, поэтому я рекомендую вам пойти по альтернативному маршруту.

Что-то вроде:

 <?php // connect to first DB $tables = mysql_query("SHOW TABLES") or die(mysql_error()); while ($row = mysql_fetch_assoc($tables)) { foreach($row as $value) { $aTables[] = $value; } } $i = 0; foreach ($aTables as $table) { $desc = mysql_query("describe " . $table); while ($row = mysql_fetch_assoc($desc)) { $aFields[$i][] = array($row["Field"],$row["Type"],$row["Null"],$row["Key"],$row["Default"],$row["Extra"]); } $i++; } // connect to second DB for ($i = 0; $i < count($aTables); $i++) { // Loop through tables, fields, and rows for create table/insert statements $query = 'CREATE TABLE IF NOT EXISTS {$aTables[$i]} ( //loop through fields { {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]}, {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]}, {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]}, {$aFields[$i][$j][0]} {$aFields[$i][$j][1]} {$aFields[$i][$j][2]} {$aFields[$i][$j][3]} {$aFields[$i][$j][4]} {$aFields[$i][$j][5]}, etc... } )'; //loop through data $query .= 'INSERT INTO {$aTables[$i]} VALUES'; $result = mysql_query("SELECT * FROM " . $aTables[$i]); while ($row = mysql_fetch_assoc($result)) { $query .= '('; foreach ($aFields[$i][0] as $field) { $query .= '"{$row[$field]}",'; } $query .= '),'; } mysql_query($query); } ?> 

Это основано на этом скрипте, который может пригодиться для справки.

Надеюсь, это поможет вам начать, но я предлагаю вам искать альтернативу, отличную от PHP.

Так я это делаю, не оригинал со мной:

http://homepage.mac.com/kelleherk/iblog/C711669388/E2080464668/index.html

 $servername = "localhost"; $username = "root"; $password = "*******"; $dbname = "dbname"; $sqlfile = "/path/backupsqlfile.sql"; $command='mysql -h' .$servername .' -u' .$username .' -p' .$password .' ' .$dbname .' < ' .$sqlfile; exec($command);