awk vs mysqldump

Произошла ситуация, когда пришлось вытащить из 55 Гб файла дампа всех бд - только дамп одной бд.

И получилось сделать это благодаря утилите awk, вернее как я понял ее новой версии gawk.

Суть утилиты awk:

  1. пробегает по строкам указанного дамп-файла
  2. применяет к каждой строке то, что написано в скрип-файле
  3. во время пробега - значение каждой строки помещается в переменную $0
  4. во время пробега - каждое слово помещается в переменную с номером слова, например $1, $2 ....$n

Вот мой скрипт, который:

  1. при начале работы awk устанавливает переменную allow_write = 0
  2. если строка совпадает с значением "USE 'MySuperDbName';" то устанавливает переменную allow_write = 1
  3. если allow_write = 1, то awk записывает строку в файл "/var/tmp/awkNewDump.sql"
  4. если allow_write = 1 и  первое слово == "CREATE" и второе слово == "DATABASE", то awk завершает работу

Файл separate-dump.awk

#!/usr/bin/gawk -f

BEGIN {
  allow_write = 0
}
{
  if ($0 == "USE `MySuperDbName`;") {
  	allow_write = 1
  }

  if (allow_write == 1 && $1 == "CREATE" && $2 == "DATABASE") {
    exit 0;
  }

  if(allow_write == 1){
    print $0 >> "/var/tmp/awkNewDump.sql";
  }
}

Запускается так:

shell> ./separate-dump.awk < dump.sql

Удачки.

Источники: 1 - 2

Оцени публикацию:
  • 1,5
Оценили человек: 1

Похожие статьи:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » Программы »