Імпортуйте файл SQL в mysql


191

У мене база даних називається nitm. Я там не створив жодних таблиць. Але у мене є файл SQL, який містить усі необхідні дані для бази даних. Файл nitm.sqlє в C:\ drive. Розмір цього файлу близько 103 Мб. Я використовую сервер wamp.

Я використовував такий синтаксис у консолі MySQL для імпорту файлу:

mysql>c:/nitm.sql;

Але це не спрацювало.



Відповіді:


406

З консолі mysql:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


переконайтеся, що немає косої риски перед контуром, якщо ви посилаєтесь на відносний шлях ... мені знадобилося певний час, щоб зрозуміти це! Лол


36
Ви не потребуєте косої риски перед контуром, якщо робите відносну посилання. Якщо ви йдете від кореня, то будете, тобто/home/user/file.sql
Уес Джонсон

5
Шкода, що немає способу додати відповідь у вибране :(
лисини

4
У Chrome їх називають закладками, і ви можете просто натиснути зірку в адресному рядку;)
Ендрю

2
@ ArseniuszŁozicki додайте запитання, і ви зможете знайти відповідь :) саме це я і роблю.
мандза

2
Просто додати до цієї відповіді, що path/to/file.sqlце шлях до локальної файлової системи, де знаходиться клієнт mysql . Бувають випадки, коли сервер MySQL очікує, що шлях буде на стороні сервера, тобто IE, SELECT ... INTO OUTFILEякий викидає файл у шлях на сервері MySQL!
Devy

90

Нарешті, я вирішив проблему. Я помістив файл `nitm.sql` у файл` bin` папки `mysql` і використав наступний синтаксис.

C:\wamp\bin\mysql\mysql5.0.51b\bin>mysql -u root nitm < nitm.sql

І це спрацювало.


8
Це не з консолі mysql, як запитував ОП, а з консолі в mysql. Відповідь Роберта Ентоні Трибіани описує, як це зробити з консолі mysql.
halfpastfour.am

Це не точний спосіб вирішення проблеми, це не рішення.
Ашиш Ратан

4
Ви, хлопці, знаєте, що це ОП відповідав на це?
Уес

Якщо вашому mysql потрібен пароль, тоді метод не працюватиме, вам потрібна головна відповідь @d -_- b
shellbye

52

Якщо ви використовуєте wamp, ви можете спробувати це. Просто введіть use your_Database_nameспочатку.

  1. Клацніть піктограму вашого сервера wamp, потім шукайте, MYSQL > MSQL Consoleа потім запустіть її.

  2. Якщо у вас немає пароля, просто натисніть Enter і введіть:

    mysql> use database_name;
    mysql> source location_of_your_file;

    Якщо у вас є пароль, ви запропонуєте ввести пароль. Спочатку введіть пароль, а потім введіть:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file має виглядати так C:\mydb.sql

тому похвала - mysql> джерело C: \ mydb.sql;

Цей вид імпорту дамп-sql дуже корисний для BIG SQL FILE.

Я скопіював свій файл mydb.sqу каталог C:. Це повинен бути з великої літери C: для запуску

і це все.


1
Ця відповідь здається специфічною для WAMP, коли показаний код працює з будь-якого середовища, на якому працює MySQL, де ви можете отримати доступ до MySQL через термінал або консоль.
halfpastfour.am

26

У Windows, якщо вищенаведена пропозиція дає вам помилку (файл не знайдений або невідомий db), ви можете подвоїти косої риски вперед:

У консолі mysql:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;

1
У моїй машині Windows один косий косий рядок працював на мене.
Маной Шреща

17

Гаразд, я використовую Linux, але я думаю, що це справедливо і для Windows. Це можна зробити безпосередньо з командного рядка

> mysql -u <user name> -p<password> <database name> < sqlfilename.sql

Або з запиту mysql ви можете використовувати:

mysql>source sqlfilename.sql

Але обидва ці підходи мають свої переваги в результатах, які вони демонструють. При першому підході сценарій закривається, як тільки виявляється помилка. І ще краще, що він повідомляє точний номер рядка у вихідному файлі, де сталася помилка. Однак він ТІЛЬКИ відображає помилки. Якщо в ньому не виникли помилки, у скриптах відображається НІЧЕ. Що може трохи нервувати. Тому що ви найчастіше виконуєте скрипт із цілою групою команд.

Тепер другий підхід (із запиту mysql) має перевагу в тому, що він відображає повідомлення для кожної різної команди MySQL у сценарії. Якщо він стикається з помилками, він відображає повідомлення про помилку mysql, але продовжується через сценарії. Це може бути добре, тому що ви можете повернутися назад та виправити всі помилки, перш ніж запустити сценарій ще раз. Мінус полягає в тому, що він НЕ відображає номери рядків у сценарії, де виникли помилки. Це може викликати біль. Але повідомлення про помилки є настільки описовими, що, можливо, ви могли зрозуміти, де проблема.

Я, наприклад, віддаю перевагу підходу командного рядка безпосередньо з ОС.



7

Ви майже там користуєтеся

mysql> \. c:/nitm.sql;

Ви також можете звернутися за допомогою до

mysql> \?

1
Це не спрацювало. Коли я використовував mysql> \. c: /nitm.sql; , він викинув помилку на кшталт Не вдалося відкрити файл 'c: \ nitm.sql;', помилка: 2
kushalbhaktajoshi

Ви спробували варіанти цього? Деякі програми стосуються C: \ nitm.sql
Lmwangi

Також зауважте, що крапка з комою не потрібно. Тож видаліть його. Інший варіант - 'cd c:', то спробуйте "\. Nitm.sql"
Lmwangi

1
Будь ласка, подумайте, перш ніж вводити текст. 'cd c:' - це команда для підказки DOS, а не консолі mySql.
kushalbhaktajoshi

1
mysql> \. ~/Downloads/backups/file.sql працював ідеально в mysql> і з термінальної coosalвідповіді також працював.
gmuhammad

6

Для localhost на XAMPP. Відкрийте вікно cmd та введіть

cd C:\xampp\mysql\bin
mysql.exe -u root -p

Увага! Немає крапки з комою після -p Введіть свій пароль і введіть

use database_name;

щоб вибрати потрібну базу даних.

Перевірте, чи там ваш стіл

show tables;

Імпорт із вашого файлу sql

source sqlfile.sql;

Я розмістив свій файл у місці C: \ xampp \ mysql \ bin, щоб не змішатись із розташуванням файлу sql.



3

Не забудьте використовувати

charset utf8

Якщо ваш sql-файл у utf-8 :)

Тому вам потрібно зробити:

cmd.exe

mysql -u корінь

mysql> charset utf8

mysql> використовувати mydbname

mysql> джерело C: \ myfolder \ myfile.sql

Удачі ))


3

У Linux я перейшов до каталогу, що містить файл .sql перед запуском mysql. Тепер курсор системи знаходиться в тому самому місці, що і файл, і шлях вам не знадобиться. Використовуйте джерело myData.sql, де моя дата замінена на ім'я вашого файлу.

cd whatever directory

mysql - p

підключити targetDB

source myData.sql

Зроблено


2

з командного рядка (cmd.exe, а не з оболонки mysql) спробуйте щось на кшталт:

type c:/nite.sql | mysql -uuser -ppassword dbname

Я не створив жодного пароля для бази даних, тому в полі пароля він порожній. І я використав вищевказаний синтаксис, як цей c: /nitm.sql | mysql -u root -p nitm, але це також не спрацювало. Чи можете ви мені ще з цим допомогти?
kushalbhaktajoshi

Опущення -p також не спрацювало. Ця помилка кинутої на зразок "c:" не розпізнається як внутрішня чи зовнішня команда, функціонуюча програма чи пакетний файл.
kushalbhaktajoshi

2

Чи містить ваш дамп функції, які не підтримуються у вашій версії MySQL? Ви також можете спробувати видалити початкові (і кінцеві) коментовані SET-заяви на MySQL.

Я не знаю, чи походить ваш дамп із версії MySQL Linux (закінчення рядків) Linux?


Я вже видалив mysql, коментував SET-заяви. Але все ж помилка трапляється.
kushalbhaktajoshi

Ви можете спробувати увійти до командної оболонки MySQL та використати оператор then: "source c: \ nite.sql". Не забудьте вибрати правильну базу даних.
Maickel

Я дуже ціную ваші зусилля. Дякую.
kushalbhaktajoshi

2

Я встановив свій сервер wamp в D: диск, тому вам доведеться перейти до наступного шляху з командного рядка ur -> (а якщо ви встановили ur wamp в c: диск, тоді просто замініть d: wtih c: тут)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysql -u root -p password db_name < "d:\backupfile.sql"

тут root є моїм паролем phpmyadmin - це пароль для phpmyadmin, тому якщо ви не встановили жодного пароля для root, просто нічого не вводьте в цьому місці, db_name - це база даних (для якої ур. база даних займає резервну копію), backupfile.sql - це файл, з якого ви хочете створити резервну копію бази даних ур, і ви також можете змінити розташування файлу резервної копії (d: \ backupfile.sql) з будь-якого іншого місця на вашому комп'ютері


1
mysql>c:/nitm.sql;

Це записало б результат команди mysql на "nitm.sql;" (Що має робити ";", якщо припустити, що ви отримали копію оригінального файлу (перед тим, як перезаписати його), то:

mysql < c:/nitm.sql

Це також не спрацювало. Він викинув помилку типу ERROR 1064 <42000>: у вашому синтаксисі SQL помилка; перевірте посібник, що відповідає вашій версії сервера MySql, чи правильно використовувати синтаксис для використання біля "mysql <c: /nitm.sql" у рядку 1
kushalbhaktajoshi

1

Експорт окремих баз даних

 djimi:> mysqldump --user=root --host=localhost --port=3306 --password=test -B CCR KIT >ccr_kit_local.sql

це експортує бази даних CCR та KIT ...

Імпортуйте всі експортовані БД до конкретного екземпляра Mysql (ви повинні бути там, де знаходиться ваш дамп-файл)

djimi:> mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql

0

В ОС Windows для мене працюють наступні команди.

mysql>Use <DatabaseName>
mysql>SOURCE C:/data/ScriptFile.sql;

Жодних лапок або подвійних лапок навколо імені файлу. Шлях міститиме '/' замість '\'.


0

Для тих із вас, хто бореться з цим, пробуючи всі можливі відповіді, які можна знайти на ТАК. Ось що для мене працювало на VPS під управлінням Windows 2012 R2:

  1. Помістіть свій файл sql, де б він не знаходився C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Відкрити командний рядок windows (cmd)

  3. Біжи C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Введіть ваш пароль
  5. Виконати команду use [database_name];
  6. Імпортуйте файл із джерелом команди C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Це зробило це для мене, як все інше не вдалося. Це теж може допомогти вам.

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