Ответ 1
Вы можете импортировать большие файлы в этот путь командной строки:
mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
У меня есть файл резервной копии размером в 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? Если да, то внесли ли я правильные изменения в файлы конфигурации? Каковы максимальные значения, допустимые для указанной выше переменной?
Вы можете импортировать большие файлы в этот путь командной строки:
mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
Поскольку вы указываете (в комментарии пояснения к другому человеку), что используете 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.
Используйте это из командного окна 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.
Хорошим решением, которое мы использовали, является разбиение файла 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, который я когда-либо видел. его свободный и с открытым исходным кодом
Имел подобную проблему, но в Windows. Я пытался выяснить, как открыть большой MySql файл в Windows, и это шаги, которые я должен был предпринять:
В приглашении mysql > введите:
CREATE DATABASE имя_базы;
ИСПОЛЬЗОВАТЬ имя_базы базы данных;
SOURCE myfile.sql
Это должно импортировать ваш большой файл.
Самое простое решение - mySql workBench просто скопировать текст файла .sql в окно запроса mysql-workbenck и просто выполнить его, все переименование будет выполняться им.
Вопрос несколько месяцев, но для других людей, смотрящих -
Простейший способ импортирования большого файла состоит в том, чтобы сделать подкаталог "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, и импорт работал плавно.
В пункте 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;
Если вы используете исходную команду в Windows, помните, что используйте f:/myfolder/mysubfolder/file.sql
, а не f:\myfolder\mysubfolder\file.sql
Я считаю, что самый простой способ - загрузить файл с помощью командной строки MYSQL.
используя команду из терминала для доступа к командной строке MySQL и запуска source
mysql --host=hostname -uuser -ppassword
source filename.sql
или прямо из терминала
mysql --host=hostname -uuser -ppassword < filename.sql
по подсказке
Я нашел эту ссылку Как загрузить большие файлы дампа sql (память, HTTP или проблемы с тайм-аутом) в MYSQL. В ней дано общее описание того, что нужно сделать, чтобы загрузить большой SQL. Это помогло мне, когда я столкнулся с клиентской свалкой 196 МБ. Что-то, что PHPMySql не может обработать.
my.ini
max_allowed_packet = 800M
read_buffer_size = 2014K
php.ini
max_input_time = 20000
memory_limit = 128M
post_max_size=128M