2012-01-25 4 views
29

У меня есть несколько файлов .sql, и я хочу, чтобы импортировал все из них сразу в базу данных MySQL.Как импортировать несколько файлов .sql сразу в базу данных mysql?

Я использую WAMP, и до сих пор:

Я хожу в PHPMyAdmin, то я получить доступ к базе данных, я нажмите "import" и я выбираю файл и импортировать его. Но поскольку у меня более 10 файлов, я хотел бы знать, есть ли лучший способ сделать это, что-то вроде одного файла, который импортирует другие файлы или аналогичные.

Я хотел бы решения без установки дополнительных программ на моем компьютере.

Заранее спасибо.

+0

Сценарий позволит вам сделать это, но вам нужно изучить его. Вы можете написать что-то в самом php или другом языке сценариев, таком как ruby ​​или python. вы могли бы даже сделать это в пакетном файле. –

ответ

58

Благодаря BlackCharly, я нашел, как это сделать в Windows, откройте терминал перейти в папку контента и написать:

copy /b *.sql all_files.sql 

Этот concate все файлы только в одном, что делает его очень быстро импортировать с PhpMyAdmin

В Linux, как и BlackCharly говорит:

cat *.sql > all_files.sql 

Последнее, но не менее, пожалуйста, примите во внимание @mosh комментарий:

Если all_files.sql уже присутствует, это может привести к рекурсивной копии файла на себе без конца! Поместите результат в отдельный каталог , чтобы быть в безопасности.

+0

, а как же различная кодировка таблицы? – Alexufo

+0

@Alexufo, что вы имеете в виду? – Chococroc

+0

Файлы дампа sql могут иметь различную кодировку. Что будет после слияния cp1251 и utf 8 в одном файле? – Alexufo

0

Самое простое решение - скопировать/вставить каждый sql-файл в один.

Вы не можете добавить SQL разметки для файла импорт (импортированные файлы будут находиться в вашем компьютере, а не на сервере, и я не думаю, что MySQL управлять каким-то импорта разметки для внешних файлов SQL) ,

+1

Да, это простое решение, и я знал это, но я не хотел этого делать, потому что мне нужно разделить файлы: каждый файл является частью моей системы, и если я хочу изменить, возможно, три части после кодируя бит, я хочу импортировать их без копирования и вставки. Во всяком случае, решение, если нет лучшего способа, спасибо – Chococroc

+0

Простым способом является создание скрипта, связывающего все файлы SQL (например, с помощью 'cat' on linux или unix) – BlackCharly

27

Самый простой способ:

cat *.sql | mysql -u user -p database 
+0

Слишком плохо, что это не будет работать на Windows, и он использует WAMP. – Beowulfenator

4

Я знаю, что это было чуть больше двух лет ... но я искал способ сделать это, и был не слишком доволен решением (он отлично работает, но я хотел получить немного больше информации по мере того, как происходит импорт). Объединяя все файлы SQL в одном, вы не получаете никаких обновлений прогресса.

Итак, я продолжал копаться в ответе и думал, что это может быть хорошим местом для публикации того, что я нашел для будущих людей, ищущих тот же ответ. Вот командная строка в Windows, которая импортирует несколько файлов SQL из папки. Вы запускаете это из командной строки в каталоге, где находится mysql.exe.

for /f %f in ('dir /b <dir>\<mask>') do mysql --user=<user> --password=<password> <dbname> < <dir>\%f 

С некоторыми предполагается значения (в качестве примера):

for /f %f in ('dir /b c:\sqlbackup\*.sql') do mysql --user=mylogin --password=mypass mydb < c:\sqlbackup\%f 

Если у вас есть два набора резервных копий SQL в папке, вы можете изменить *.sql к чему-то более конкретному (например, mydb _ *. sql).

+0

Это отличное решение, я ввожу дополнительную информацию, если имя вашей папки пустое, мы добавляем двойные кавычки. Пример: для/f% f in ('dir/b "C: \ Bitbucket \ db \ Aron \ March 9 \ turl_trevin \" *. Sql') do mysql --user = root --password = root test <"C : \ Bitbucket \ db \ Aron \ March 9 \ turl_trevin "\% f –

2

Введите оболочку mysql, как это.

MySQL --host = локальный --user = имя пользователя --password --database = дб

Затем используйте источник команды и точку с запятой отделить команды.

источник file1.sql; исходный файл2; исходный файл3;

7
  1. Goto CMD

  2. Введите в командной строке C: \ Пользователи \ Usersname> CD [.sql таблицы путь к папке]
    Нажмите Enter
    Пример: C : \ Пользователи \ Имя пользователя> cd E: \ project \ database

  3. Запрос командной строки
    C: \ users \ Usersname> [диск (каталог) имя SQL папки.]
    Нажмите Enter
    Ex: C: \ Пользователи \ Usersname> E:

  4. Тип командной строки для опушке все .sql файл (таблица) в один файл
    копировать/б * .sql newdatabase.sql
    Нажмите Enter
    EX: E: \ проект \ базы данных> копировать/б * .sql newdatabase.sql

  5. Вы можете увидеть Слияние нескольких .sql (файл) ta BLES файлов в один файл в папке каталога
    Ex: E: \ Проект \ базы данных

0

Сохраните этот файл, как .bat и запустить его, изменить переменные в скобках ...

@echo off 
title Mysql Import Script 
cd (Folder Name) 
for %%a in (*) do (
    echo Importing File : %%a 
    mysql -u(username) -p(password) %%~na < %%a 
) 
pause 

если только одна база данных модифицирует (%% ~ na) с именем базы данных.

Смежные вопросы