Подтвердить что ты не робот

Импорт больших файлов sql в MySQL

У меня есть файл резервной копии размером в 400 Мбайт. Я пытаюсь импортировать этот файл в базу данных 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? Если да, то внесли ли я правильные изменения в файлы конфигурации? Каковы максимальные значения, допустимые для указанной выше переменной?

4b9b3361

Ответ 1

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

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

Ответ 2

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

  • В MySQL Workbench зайдите в меню "Файл", затем выберите "открыть script". Вероятно, это займет много времени и может даже привести к сбою приложения, поскольку оно не предназначено для открытия вещей, размер которых не превышает того, что вы описываете.

  • Лучше всего использовать командную строку. Убедитесь, что на вашем компьютере установлен клиент MySQL. Это означает, что MySQL (не Workbench GUI или 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.

Ответ 3

Используйте это из командного окна mysql:

mysql> use db_name;
mysql> source backup-file.sql;

Ответ 4

Вы можете сделать команду импорта из любого браузера запросов SQL, используя следующую команду:

source C:\path\to\file\dump.sql

Запустите вышеуказанный код в окне запроса... и подождите некоторое время:)

Это более или менее равно ранее указанной версии командной строки. Главное отличие состоит в том, что он выполняется из MySQL вместо этого. Для тех, кто использует нестандартные кодировки, это также безопаснее, чем использование версии командной строки из-за меньшего риска сбоев в кодировании.

Ответ 5

Мне действительно нравится BigDump. Это очень простой файл PHP, который вы редактируете и отправляете с помощью своего огромного файла через SSH или FTP. Беги и жди! Очень легко настроить кодировку символов, по умолчанию используется UTF-8.

Ответ 6

Мы столкнулись с той же проблемой при перемещении внутреннего сервера sql.

Хорошим решением, которое мы использовали, является разбиение файла sql на куски. Существует несколько способов сделать это. Используйте

http://www.ozerov.de/bigdump/ кажется хорошим (но никогда не использовал его)

http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/ использовал его, и было очень полезно получить структуру из беспорядка, и вы можете взять ее оттуда.

Надеюсь, что это поможет:)

Ответ 7

3 вещи, которые вы должны сделать, если вы делаете это локально:

в php.ini или php.cfg вашей установки php

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

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

ИЛИ

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

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

Ответ 8

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

  • Перейдите на сайт загрузки (http://dev.mysql.com/downloads/).
  • Загрузите сервер сообщества MySQL и установите его (выберите разработчика или полную установку, чтобы он установил клиентские и серверные инструменты).
  • Откройте клиент командной строки MySql в меню "Пуск".
  • Введите пароль, используемый при установке.
  • В приглашении mysql > введите:

    CREATE DATABASE имя_базы;

    ИСПОЛЬЗОВАТЬ имя_базы базы данных;

    SOURCE myfile.sql

Это должно импортировать ваш большой файл.

Ответ 9

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

Ответ 10

Вопрос несколько месяцев, но для других людей, смотрящих -

Простейший способ импортирования большого файла состоит в том, чтобы сделать подкаталог "upload" в вашей папке c:/wamp/apps/phpmyadmin3.5.2 и отредактируйте эту строку в файле config.inc.php в том же каталоге, чтобы включить имя папки $ cfg ['UploadDir'] = 'upload';

Затем поместите входящий файл .sql в папку /upload.

Работая внутри консоли phpmyadmin, перейдите в новую базу данных и импортируйте. Теперь вы увидите дополнительный вариант для загрузки файлов из этой папки. Выберите правильный файл и будьте немного терпеливы. Он работает.

Если вы все еще получаете ошибку тайм-аута, попробуйте добавить $cfg ['ExecTimeLimit'] = 0; в тот же файл config.inc.php.

Мне было трудно импортировать файл .sql, где имя пользователя было root, а пароль отличался от моего пароля root на моем новом сервере. Я просто снял пароль, прежде чем экспортировал файл .sql, и импорт работал плавно.

Ответ 11

В пункте 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;

Ответ 12

Если вы используете исходную команду в Windows, помните, что используйте f:/myfolder/mysubfolder/file.sql, а не f:\myfolder\mysubfolder\file.sql

Ответ 13

Я считаю, что самый простой способ - загрузить файл с помощью командной строки MYSQL.

используя команду из терминала для доступа к командной строке MySQL и запуска source

    mysql --host=hostname -uuser -ppassword
    source filename.sql 

или прямо из терминала

   mysql --host=hostname -uuser -ppassword < filename.sql

по подсказке

Я нашел эту ссылку Как загрузить большие файлы дампа sql (память, HTTP или проблемы с тайм-аутом) в MYSQL. В ней дано общее описание того, что нужно сделать, чтобы загрузить большой SQL. Это помогло мне, когда я столкнулся с клиентской свалкой 196 МБ. Что-то, что PHPMySql не может обработать.

Ответ 14

my.ini

max_allowed_packet = 800M
read_buffer_size = 2014K

php.ini

max_input_time = 20000
memory_limit = 128M
post_max_size=128M