Импорт больших файлов sql в MySQL
У меня есть 400 МБ большой файл резервной копии sql. Я пытаюсь импортировать этот файл в базу данных MySQL с помощью WAMP->import, но импорт был неудачным из-за многих причин, таких как размер файла загрузки слишком велик и так далее. Итак, я пошел вперед и внес несколько изменений в настройки конфигурации PHP и MySQL под WAMP. Внесенные изменения
Under WAMP->MySQL->my.ini
max_allowed_packet = 800M
read_buffer_size = 2014K
Under WAMP->PHP->PHP.ini
max_input_time = 20000
memory_limit = 128M
мой вопрос, это правильный способ импортировать такие большие файлы sql с помощью WAMP- > import? Если да, то сделал ли я правильные изменения в конфигурационные файлы? Каковы максимальные значения, допустимые для вышеуказанной переменной?
14 ответов:
вы можете импортировать большие файлы в этой командной строке:
mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
поскольку вы заявляете (в пояснительном комментарии к ответу другого человека), что вы используете MySQL Workbench, вы можете попробовать использовать опцию "SQL script" там. Это позволит избежать необходимости использовать командную строку (хотя я согласен с другим ответом, что хорошо подняться на эту лошадь и научиться ездить).
1: из каталога, в котором находится файл резервной копии:
в MySQL Workbench перейдите в меню Файл, затем выберите "Открыть скрипт". Это, вероятно, займет много времени и может даже привести к сбою приложения, так как это не создан, чтобы открывать вещи, которые так же велики, как то, что вы описываете.
лучший способ-использовать командную строку. Убедитесь, что на вашем компьютере установлен клиент MySQL. Это означает фактический MySQL (а не GUI Workbench или PhpMyAdmin или что-то в этом роде). Вот это ссылка, описывающая средство командной строки. После того, как вы это загрузили и установили, откройте окно терминала на своем компьютере, и у вас есть два варианта для хлебания данных из вашей файловой системы (например, в файле резервной копии) в целевую базу данных. Один заключается в использовании команды 'источник', а другой использовать
2: из каталога, в котором находится файл резервной копии:$mysql -u username -p -h hostname databasename < backupfile.sql
$mysql -u username -p -h hostname [enter your password] > use databasename; > source backupfile.sql
очевидно, что оба эти параметра требуют, чтобы у вас был файл резервной копии, который является SQL.
вы можете сделать команду импорта из любого браузера запросов SQL, используя следующую команду:
source C:\path\to\file\dump.sql
запустите приведенный выше код в окне запроса ... и подождите немного:)
Это более или менее соответствует ранее заявленной версии командной строки. Основное отличие заключается в том, что он выполняется из MySQL вместо этого. Для тех, кто использует нестандартные кодировки, это также безопаснее, чем использование версии командной строки из-за меньшего риска сбоев кодирования.
Мне очень нравится BigDump сделать это. Это очень простой PHP-файл, который вы редактируете и отправляете с вашим огромным файлом через SSH или FTP. Беги и жди! Это очень легко настроить кодировку символов, поставляется UTF-8 по умолчанию.
мы столкнулись с той же проблемой при перемещении sql server в доме.
хорошим решением, которое мы в конечном итоге использовали, является разделение файла sql на куски. Есть несколько способов сделать это. Используйте
http://www.ozerov.de/bigdump/ кажется хорошим (но никогда не использовал его)
http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/ использовал его, и это было очень полезно, чтобы получить структуру из беспорядка, и вы можете взять его из там.
надеюсь, что это помогает :)
3 вещи, которые вы должны сделать, если вы делаете это локально:
на
php.ini
илиphp.cfg
вашей установки phppost_max_size=500M upload_max_filesize=500M memory_limit=900M
или установить другие значения. Перезапустить Apache.
или
используйте php big dump tool его лучшее, что я когда-либо видел. его бесплатно и с открытым исходным кодом
была аналогичная проблема, но в Windows. Я пытался выяснить, как открыть большой файл MySql sql в Windows, и это шаги, которые я должен был предпринять:
- перейдите на сайт загрузки (http://dev.mysql.com/downloads/).
- загрузите сервер MySQL Community Server и установите его (выберите разработчика или полную установку, чтобы он установил клиентские и серверные инструменты).
- откройте клиент командной строки MySql с самого начала меню.
- введите пароль, используемый в установке.
в приглашении, mysql>, введите:
создать базу данных database_name;
использовать имя_базы_данных;
исходный myfile.sql
Это должно импортировать ваш большой файл.
по пункту 1.16 phpMyAdmin они говорят:
1.16 я не могу загружать большие файлы дампа (проблемы с памятью, HTTP или таймаутом).
начиная с версии 2.7.0, механизм импорта был переписан, и эти проблемы не должны возникать. Если возможно, обновите phpMyAdmin до последней версии, чтобы воспользоваться новыми функциями импорта.
первое, что нужно проверить (или попросить вашего хост-провайдера проверить), это значения
upload_max_filesize
,memory_limit
иpost_max
_size вphp.ini
файл конфигурации. Все эти три параметра ограничивают максимальный размер данных, которые могут быть отправлены и обработаны PHP. Один пользователь также сказал, чтоpost_max_size
иmemory_limit
должны быть больше, чем upload_max_filesize. Существует несколько обходных путей, если ваша загрузка слишком велика или ваш хостинг-провайдер не желает изменять настройки:посмотреть
$cfg['UploadDir']
характеристика. Это позволяет загружать файл на сервер через scp, ftp или ваш любимый способ передачи файлов. В phpmyadmin можно импортировать файлы из временного каталога. Дополнительная информация доступна в конфигурации этого документа.С помощью утилиты (например,BigDump) для разделения файлов перед загрузкой. Мы не можем поддерживать это или любые сторонние приложения, но знаем о пользователях, имеющих успех с ним.
если у вас есть доступ к оболочке (командной строке), используйте MySQL для прямого импорта файлов. Вы можете сделать это, выпустив команда "source" из MySQL:
source filename.sql;
вопрос несколько месяцев, но для других людей, глядя --
более простой способ импортировать большой файл, чтобы сделать подкаталог "загрузить" в вашей папке c:/wamp/apps/phpmyadmin3.5.2 и отредактируйте эту строку в конфигурации.Инк.php файл в том же каталоге, чтобы включить имя папки $cfg ['UploadDir'] = 'загрузить';
затем поместите входящий .файл sql в папке / upload.
работая изнутри консоли phpmyadmin, перейдите к новой базе данных и импорт. Теперь вы увидите дополнительную опцию для загрузки файлов из этой папки. Выберите правильный файл и будьте немного терпеливы. Это работает.
Если вы все еще получаете ошибку тайм-аута, попробуйте добавить $cfg['ExecTimeLimit'] = 0; в ту же конфигурацию.Инк.PHP-файл.
У меня были трудности с импортом .sql-файл, где имя пользователя root и пароль отличался от пароля root на моем новом сервере. Я просто снял пароль, прежде чем экспортировать его .sql-файл и импорт работал гладко.
Я считаю, что самый простой способ-загрузить файл с помощью командной строки MYSQL.
используя команду из терминала, чтобы получить доступ к командной строке mysql и запустить источник
mysql --host=hostname -uuser ppassword source filename.sql
или непосредственно из терминала
mysql --host=hostname -uuser ppassword < filename.sql
в строке
Я нашел эту ссылку как загрузить большие файлы дампа sql (проблемы с памятью, HTTP или таймаутом) в MYSQL. это дает представление о том, что делать, чтобы загрузить большой SQL. Это помогло мне когда я столкнулся с клиентом 196mb SQL dump. Что-то, с чем PHPMySql не мог справиться.
Если вы используете исходную команду в Windows, не забудьте использовать
f:/myfolder/mysubfolder/file.sql
, а неf:\myfolder\mysubfolder\file.sql