SQL / PHP: Как загрузить большую базу данных на сервер, если у меня есть ограничение на размер импортируемого файла? А потом обновить - PullRequest
2 голосов
/ 10 июня 2010

Я создаю локально большую базу данных, используя MySQL и PHPmyAdmin.Я постоянно добавляю много информации в базу данных.Сейчас у меня более 10 МБ данных, и я хочу экспортировать базу данных на сервер, но у меня есть ограничение на размер файла 10 МБ в разделе «Импорт» PHPmyAdmin моего веб-хоста.

Итак, первый вопрос: какЯ могу разделить данные или что-то подобное, чтобы иметь возможность импортировать?

НО, потому что я постоянно добавляю новые данные локально, мне также нужно экспортировать новые данные в базу данных веб-хоста.

Итак, второй вопрос: как обновить базу данных, если добавленные новые данные находятся между всеми «старыми / уже загруженными» данными?

Ответы [ 2 ]

2 голосов
/ 10 июня 2010

Не используйте phpMyAdmin для импорта больших файлов. Вам будет гораздо лучше использовать CLI mysql для импорта дампа вашей БД. Импортировать очень легко, перенести файл SQL на сервер и затем выполнить на сервере следующее (вы можете запустить эту команду из сценария PHP, используя shell_exec или систему, если необходимо) mysql --user=user --password=password database < database_dump.sql. Конечно, база данных должна существовать, и пользователь, которого вы предоставляете, должен иметь необходимые привилегии для обновления базы данных.

Что касается синхронизации изменений: это может быть очень сложно и зависит от множества факторов. Вы единственная сторона, предоставляющая новую информацию, или другие также добавляют новые записи? Собираетесь ли вы со временем изменить структуру таблицы?

Если вы только добавляете данные, и структура таблицы не меняется, вы можете использовать логический флаг или временную метку для определения записей, которые необходимо перенести. На основе этого поля вы можете создать частичные дампы с помощью phpMyAdmin (написав команду SQL и щелкнув «Экспорт» внизу, убедившись, что вы экспортируете только данные), и импортировать их, как описано выше.

Кстати, вы также можете посмотреть, как настроить сценарий «ведущий-ведомый» с MySQL, где ваши данные автоматически передаются на другой сервер (еще один вариант, который может быть лучше в зависимости от ваших конкретных потребностей). Для получения дополнительной информации обратитесь к главе Репликация в руководстве MySQL.

0 голосов
/ 10 июня 2010

Что бы я сделал, в 3 шага:

Шаг 1: Экспорт структуры БД без содержимого.Это легко сделать на странице экспорта phpmyadmin.После этого я добавлю это в новую базу данных.

Шаг 2: Добавьте новый столбец BOOL в вашу локальную базу данных в каждой таблице.Функция этого заключается в том, чтобы хранить, если данные являются новыми, или даже нет.Из-за этого установите значение по умолчанию true

Шаг 3: Создайте скрипт php, который подключается к обеим базам данных.Сценарий должен получить данные из вашей локальной базы данных и поместить их в новую.

Я бы сделал это с помощью следующих методов mysql http://dev.mysql.com/doc/refman/5.0/en/show-tables.html, http://dev.mysql.com/doc/refman/5.0/en/describe.html, выбор, обновление ивставьте

, тогда вам придется запускать скрипт каждый раз, когда вы хотите синхронизировать ваш локальный компьютер с сервером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...