Як імпортувати великий файл sql у phpmyadmin


81

Я хочу імпортувати файл sql розміром приблизно 12 Мб. Але це спричиняє проблему під час завантаження. Чи є спосіб завантажити його, не розділяючи файл sql?


1
скористайтеся деякими інструментами mysql, такими як mysql workbenchormysql Yog
— diEcho,

ви також можете побачити це тут stackoverflow.com/questions/9593128/… Данн.
— Гній

Якщо ви не можете користуватися консоллю mysql, є цікаве рішення, яке походить із документації phpmyadmin: ozerov.de/bigdump
— Паоло

Відповіді:


97

Спробуйте імпортувати його з консолі mysql на смак вашої ОС.

mysql -u {DB-USER-NAME} -p {DB-NAME} < {db.file.sql path}

або якщо він знаходиться на віддаленому сервері, використовуйте прапор -h, щоб вказати хост.

mysql -u {DB-USER-NAME} -h {MySQL-SERVER-HOST-NAME} -p {DB-NAME} < {db.file.sql path}

1
Добре, дякую за повернення хлопців. Я вношу зміни в php.ini та архівую файл. Мені це
— вдається

3
найшвидший спосіб зробити це!
— Aris

1
Це чудова відповідь. Для тих, хто може бути не дуже кмітливим, ви можете просто завантажити файл DB у ваш менеджер файлів на хості, а потім використовувати SSH на хості для локальної роботи. Це набагато простіше, ніж встановлення mysqlна сервері лише за одну міграцію. Дякуємо за допомогу, хлопці! (Крім того, мені не потрібні дужки)
— DomainsFeatured

1
Для тих, хто цікавиться, вам потрібно перейти до папки MySQL / bin, щоб запустити команду. Працював чудово. Дякую.
— Етьєн Дюпюї

1
А як щодо того, що вони не мають пароля? використання бази даних із іменем користувача за замовчуванням root? За допомогою цієї команди він запитує пароль.
— Hkachhia

68

3 речі, які ви повинні зробити:

у php.iniвашій установці php (примітка: залежно від того, чи потрібно це для CLI, apache або nginx, знайдіть потрібний php.ini для маніпулювання)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

або встановити інші значення.

Перезапустіть / перезавантажте apache, якщо у вас встановлений apache, або php-fpm для nginx, якщо ви використовуєте nginx.

Віддалений сервер?

збільшити max_execution_timeтакож, оскільки завантаження файлу займе час.

Встановлення NGINX?

Ви повинні додати: client_max_body_size 912M;в /etc/nginx/nginx.confдо http{...}блоку


3
Правильна відповідь. Ці 3 рядки були must

Це потрібно додати до вашого каталогу apache, а не до каталогу cli (принаймні, як перевірено на моєму вікні Ubuntu)
— Bad_Neighbor

змінити це на /etc/php/7.1/apache2/php.iniне вдалося
— W.Doch

@RickSanchez ти впевнений, що запускаєш цю версію php на apache? будь ласка, запустіть phpinfo()і переконайтеся, що значення були встановлені правильно і сервер перезапущений
— Тоскан

1
Не забудьте підняти значення max_execution_time у php ini та перезапустити apache
— hamboy75

62

Відредагуйте файл config.inc.php, який знаходиться в каталозі phpmyadmin. У моєму випадку це знаходиться за адресою C:\wamp\apps\phpmyadmin3.2.0.1\config.inc.php.

Знайдіть рядок із $cfg['UploadDir']ним та оновіть його до$cfg['UploadDir'] = 'upload';

Потім створіть каталог під назвою 'upload' у каталозі phpmyadmin (для мене, на C:\wamp\apps\phpmyadmin3.2.0.1\upload\).

Потім помістіть великий файл SQL, який ви намагаєтеся імпортувати, у новий uploadкаталог. Тепер, перейшовши на сторінку імпортування db у консолі phpmyadmin, ви помітите випадаючий список, якого раніше не було - він містить усі файли sql у каталозі завантаження, який ви щойно створили. Тепер ви можете вибрати це і розпочати імпорт.

Якщо ви не використовуєте WAMP в Windows, то я впевнений, ви зможете адаптувати це до свого середовища без зайвих проблем.

Посилання: http://daipratt.co.uk/importing-large-files-into-mysql-with-phpmyadmin/comment-page-4/


5
У більш пізніх версіях phpMyAdmin, варіанта $ cfg ['UploadDir'] взагалі немає; однак це рішення все ще працює, просто додавши var до нового рядка у файлі.
— дан

Var знайдено в config.default.phpтому ж режимі, що я використовую phpmyadmin версії 4.6.4
— KAD

1
Не вдалося відредагувати попередній коментар, каталогlibraries/config.default.php
— KAD

чудове рішення, витративши два дні на спробу командного рядка MySQL із результатами відмов.
— youhana

22

Рішення для КОРИСТУВАЧІВ LINUX (запуск із sudo)

Створення каталогів "завантаження" та "збереження":

mkdir /etc/phpmyadmin/upload
mkdir /etc/phpmyadmin/save
chmod a+w /etc/phpmyadmin/upload
chmod a+w /etc/phpmyadmin/save

Потім відредагуйте файл конфігурації phpmyadmin:

gedit /etc/phpmyadmin/config.inc.php

Нарешті, додайте абсолютний шлях для каталогів "завантаження" та "збереження":

$cfg['UploadDir'] = '/etc/phpmyadmin/upload';
$cfg['SaveDir'] = '/etc/phpmyadmin/save';

Тепер просто опустіть файли в /etc/phpmyadmin/uploadпапку, і тоді ви зможете вибрати їх у phpmyadmin.

введіть тут опис зображення

Сподіваюся, це допоможе.


За допомогою цього методу phpmyadmin File could not be read!надсилає мені повідомлення, коли я натискаю кнопку подати у формі для завантаження. Посеред усунення несправностей це зараз.

@JoeRocc ти знайшов рішення для своєї проблеми? Можливо, це проблема дозволу чи власності. Спробуйте зsudo chmod 777 your-filename.sql
— Guille Acosta

2
775. Не 777. Не слід радити встановлювати 777, щоб все працювало на реальному сервері. У нього є проблеми з безпекою.
— Koushik Das

15

Всього один рядок, і все готово (переконайтесь, що команда mysql доступна як глобальна, або просто перейдіть до папки встановлення mysql і введіть до папки bin)

mysql -u database_user_name -p -D database_name < complete_file_path_with_file_name_and_extension 

Ось

  • u розшифровується як Користувач
  • p розшифровується як Пароль
  • D розшифровується як База даних

--- НЕ ЗАБУВАЙТЕ ДОДАТИ <ЗНАК ПІСЛЯ НАЗВАННЯ БАЗИ ДАНИХ ---

Повний шлях до файлу з ім'ям і розширенням може бути подібним

c:\folder_name\"folder name"\sql_file.sql

--- ЯКЩО ВАША ПАПКА І ІМЯ ФАЙЛУ МІСТИТЬ ПРОСТІР, ЩО ЇХ ЗВ'ЯЗАТИ ЗА ДВОЙНОЮ ЦИТАТОЮ ---

Порада. Примітка. Ви можете написати свій пароль після, -pале це не рекомендується, оскільки він відображатиметься іншим, хто в цей час спостерігає за вашим екраном. Якщо ви не напишете там, він запитає вас, коли ви виконаєте команду, натиснувши клавішу enter.



7

Я зміг імпортувати великий .sqlфайл, маючи таку конфігурацію у httpd.confфайлі:

Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
    AllowOverride AuthConfig
    Require all granted

    php_admin_value upload_max_filesize 128M
    php_admin_value post_max_size 128M
    php_admin_value max_execution_time 360
    php_admin_value max_input_time 360
</Directory>

4

Вам доведеться відредагувати файл php.ini. змініть наступне відповідно upload_max_filesize post_max_sizeдо розміру вашого файлу.

Спроба запустити, phpinfo()щоб побачити їх поточне значення. Якщо у вас немає можливості змінити файл php.ini безпосередньо, спробуйте ini_set ()

Якщо це теж не варіант, ви можете спробувати bigdump .




2

Я випадково натрапив на статтю, і це мені найбільше вдалося

  1. Відкрийте файл config.inc.php в директорії phpmyadmin за допомогою улюбленого редактора коду. У вашому локальному середовищі MAMP він повинен знаходитися тут:

Жорсткий диск »Програми» MAMP »bin» config.inc.php

  1. Зробіть пошук за фразою $cfg[‘UploadDir’]- вона буде виглядати так:

$cfg['UploadDir'] = '';

  1. Змініть його так:

$cfg['UploadDir'] = 'upload';

  1. Потім, у цьому каталозі phpmyadmin, створіть нову папку та назвіть її завантаженою.

  2. Візьміть великий файл .sql, який ви намагаєтеся імпортувати, і покладіть його в нову папку для завантаження.

  3. Тепер, наступного разу, коли ви будете імпортувати базу даних у phpMyAdmin, ви побачите нове спадне поле прямо під стандартною областю перегляду у вашому розділі «Файл для імпорту».


2

Гаразд, ви використовуєте PHPMyAdmin, але іноді найкращий спосіб - через термінал:

  • Підключення до бази даних: mysql -h localhost -u root -p(переключити root та localhost для розташування користувачів та бази даних)
  • Почати імпорт із дампа: \. /path/to/your/file.sql
  • Іди візьми кави і похвалися собою, бо ти використовуєш термінал.

І це все. Тільки пам’ятайте, якщо ви знаходитесь на віддаленому сервері, ви повинні завантажити файл .sql в якусь папку.


2

відповідь для тих, хто має спільний хостинг. Найкраще використовувати цей маленький скрипт, який я щойно використав для імпорту 300 Мб файлу БД на свій сервер. Сценарій називається Big Dump.

надає сценарій для імпорту великих БД на сервери з обмеженими ресурсами


Це насправді хороше рішення, але Ви отримали прихильність через URL, який одного разу може бути недійсним. Будь ласка, додайте трохи інформації про цей сценарій, зокрема його назву.
— замість цього

його називається великий дамп, він зупиняє зупинку або переривання сервера SQL під час імпорту великого файлу бази даних на сервер. До речі, є інші відповіді з URL-адресами, які можуть бути
— недоступні

2

У MAMP ви можете завантажувати величезні файли, виконуючи:

  1. створення нової папки в цьому каталозі / MAMP / bin / phpMyAdmin / "folderName"

  2. а потім відредагуйте рядок 531 "/MAMP/bin/phpMyAdmin/config.inc.php":

       $cfg['UploadDir']= 'folderName';   
    
  3. Скопіюйте файли .sql або .csv у цю папку.

  4. Тепер у вас буде ще одна опція у "PhpMyAdmin": Виберіть із каталогу завантаження веб-сервера newFolder /: Ви можете вибрати свій файл та імпортувати його.

    Ви можете завантажити будь-який файл зараз !!


1

Найкращий спосіб завантажити великий файл, не використовуючи phpmyadmin. викликати phpmyadin спочатку завантажити файл за допомогою класу завантаження php, а потім виконати sql, що спричиняє більшу частину часу його очікування.

найкращий спосіб: ввести папку wamp> bin> mysql> dinrectory bin, потім написати цей рядок

mysql -u root -p списки назв <latestdb.sql тут - це ім'я бази даних спочатку створіть порожню базу даних, а latestdb.sql - це ваше ім'я файлу sql, де представлені ваші дані.

але одна важлива річ - якщо у вашому файлі бази даних є дані Unicode. вам потрібно відкрити файл latestdb.sql і один рядок перед будь-яким рядком. рядок:

ВСТАНОВИТИ ІМЕНИ utf8; тоді у вашому командному режимі запустіть цей код сценарію


1
  1. Відкрийте файл sql у текстовому редакторі (наприклад, Блокноті)
  2. Виберіть Усі -> Копіювати
  3. Перейдіть до phpMyAdmin, виберіть свою базу даних і перейдіть на вкладку SQL
  4. Вставте скопійований вміст у буфер обміну
  5. Це може спливати помилку JavaScript, ігнорувати її
  6. Виконати

Невдала практика! Великі тексти спричинять великі проблеми, коли ви це робите. Найкращий спосіб - це налаштувати php.ini, щоб дозволити великий імпорт або імпорт через mysql.
— Марсело Агімовель,

0

Змініть налаштування сервера, щоб дозволити завантаження файлів розміром більше 12 Мб, і з вами все повинно бути. Зазвичай для завантаження файлів налаштування сервера встановлюються від 5 до 8 Мб.


1
Це не дає відповіді на запитання. Щоб критикувати або вимагати роз’яснень від автора, залиште коментар під його публікацією. - З огляду
— Себастьян Брош,

1
насправді на момент публікації цієї відповіді це була найпоширеніша помилка (3 роки тому), що завантаження файлів за замовчуванням було недостатньо великим. Він використовує phpmyadmin == веб-інтерфейс. import == завантажити з диска. upload == налаштування сервера. налаштування сервера == за замовчуванням, що становить 5 або 8 Мб 3 роки тому. Тому я не бачу, як це НЕ дає відповіді. Так, я не вів його за руку, як точно налаштувати, оскільки він не вказав, який сервер він використовує, apache, ngix, iis та ін.
— Tschallacka

0

Одним із рішень є використання командного рядка;

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

Просто переконайтеся, що шлях до SQL файлу для імпорту вказаний явно.

У моєму випадку я використав це;

mysql -h localhost -u root -p databasename < /home/ejalee/dumps/mysqlfile.sql

Вуаля! вам добре їхати.



0

PHPmyadmin також приймає стиснені файли у форматі gzip, тому ви можете сперти файл у архів (скористайтеся 7Zip, якщо у вас його немає) і завантажити файл, що зберігається у архіві. Оскільки це текстовий файл, він матиме хороший коефіцієнт стиснення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.