Импорт больших файлов 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 55

14 ответов:

вы можете импортировать большие файлы в этой командной строке:

mysql -h yourhostname -u username -p databasename < yoursqlfile.sql

поскольку вы заявляете (в пояснительном комментарии к ответу другого человека), что вы используете MySQL Workbench, вы можете попробовать использовать опцию "SQL script" там. Это позволит избежать необходимости использовать командную строку (хотя я согласен с другим ответом, что хорошо подняться на эту лошадь и научиться ездить).

  1. в MySQL Workbench перейдите в меню Файл, затем выберите "Открыть скрипт". Это, вероятно, займет много времени и может даже привести к сбою приложения, так как это не создан, чтобы открывать вещи, которые так же велики, как то, что вы описываете.

  2. лучший способ-использовать командную строку. Убедитесь, что на вашем компьютере установлен клиент MySQL. Это означает фактический MySQL (а не GUI Workbench или PhpMyAdmin или что-то в этом роде). Вот это ссылка, описывающая средство командной строки. После того, как вы это загрузили и установили, откройте окно терминала на своем компьютере, и у вас есть два варианта для хлебания данных из вашей файловой системы (например, в файле резервной копии) в целевую базу данных. Один заключается в использовании команды 'источник', а другой использовать

1: из каталога, в котором находится файл резервной копии:
$mysql -u username -p -h hostname databasename < backupfile.sql
2: из каталога, в котором находится файл резервной копии:
$mysql -u username -p -h hostname
[enter your password]
> use databasename;
> source backupfile.sql

очевидно, что оба эти параметра требуют, чтобы у вас был файл резервной копии, который является SQL.

пользователь это из командного окна mysql:

mysql> use db_name;
mysql> source backup-file.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 вашей установки php

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

или установить другие значения. Перезапустить Apache.

или

используйте php big dump tool его лучшее, что я когда-либо видел. его бесплатно и с открытым исходным кодом

http://www.ozerov.de/bigdump/

была аналогичная проблема, но в 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

самое простое решение-mySql workBench просто скопируйте .sql-файл, текст в окне базы данных MySQL-workbenck запрос и просто запустить его, все переименования все будет сделано по его.

мой.ini

max_allowed_packet = 800M
read_buffer_size = 2014K

PHP.ini

max_input_time = 20000
memory_limit = 128M
post_max_size=128M