• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
[Windows/Linux] Объединение SQL апдейтов
Dinoza
para bellum
Здравствуйте ув. пользователи портала. Сегодня я расскажу как проще заливать много *.sql файлов за один раз слитием их в один. Собственно сегодня будет или реч о объединении всех апдейтов бд.

Для Windows:
Собственно делаем *батник. Кидаем его в папку с исходниками.

Quote
Батник - *.bat файл. Создаем текстовый документ и меняем расширения с *.txt на *.bat, и открываем, например, с Notepad++.


Code
@echo off
setlocal EnableDelayedExpansion
set WorldUpdates=All_World_Updates.sql
set CharactersUpdates=All_Characters_Updates.sql
set AuthUpdates=All_Auth_Updates.sql

if exist %CharactersUpdates% del %CharactersUpdates%
if exist %AuthUpdates% del %AuthUpdates%
if exist %WorldUpdates% del %WorldUpdates%

for %%a in (sql\updates\world\*.sql) do (
echo /* >>%WorldUpdates%
echo * %%a >>%WorldUpdates%
echo */ >>%WorldUpdates%
copy/b %WorldUpdates%+"%%a" %WorldUpdates%
echo. >>%WorldUpdates%
echo. >>%WorldUpdates%)

for %%a in (sql\updates\characters\*.sql) do (
echo /* >>%CharactersUpdates%
echo * %%a >>%CharactersUpdates%
echo */ >>%CharactersUpdates%
copy/b %CharactersUpdates%+"%%a" %CharactersUpdates%
echo. >>%CharactersUpdates%
echo. >>%CharactersUpdates%)

for %%a in (sql\updates\auth\*.sql) do (
echo /* >>%AuthUpdates%
echo * %%a >>%AuthUpdates%
echo */ >>%AuthUpdates%
copy/b %AuthUpdates%+"%%a" %AuthUpdates%
echo. >>%AuthUpdates%
echo. >>%AuthUpdates%)


Для Linux:
Переходим в папку с апдейтами (sql/updates).

Объединить все апдейты:
Code
cat world/*.sql > all_world_updates.sql
cat characters/*.sql > all_characters_updates.sql


Объединить все апдейты и залить в бд:
Code
for file in world/*.sql; do mysql -u USERNAME -pPASSWORD --database=WORLD < $file; done
for file in characters/*.sql; do mysql -u USERNAME -pPASSWORD --database=CHARACTERS < $file; done


Автор кода и мануала: Gregarious. Я немножко переделал само содержание.

Теперь можно модифицировать этот батник под себя. Например, объединить все sql файлы, которые есть в определенной папке:

Code
echo off
setlocal EnableDelayedExpansion
set WorldUpdates=All_World_Updates.sql

if exist %WorldUpdates% del %WorldUpdates%

for %%a in (*.sql) do (
echo /* >>%WorldUpdates%
echo * %%a >>%WorldUpdates%
echo */ >>%WorldUpdates%
copy/b %WorldUpdates%+"%%a" %WorldUpdates%
echo. >>%WorldUpdates%
echo. >>%WorldUpdates%)


Делаем батник с выше написанным содержимым и кидаем в папку с *.sql файлами..

Думаю тут все ясно v

Спасибо Gregarious за код и мануал и Никите (Neket007) за то что давно показал его мне.

Содержимое взято с TrinityCore
Сообщение # 1 отредактировано Dinoza - Вторник, 13.03.2012, 11:55
Александрович
Местный Житель
молодец Паш.. как всегда на высоте ))))
Сообщение # 2 написано 31.03.2012 в 17:12
  • Страница 1 из 1
  • 1
Поиск: