Как удалить пустые таблицы из файла резервной копии MySQL - PullRequest
1 голос
/ 26 февраля 2010

У меня есть несколько больших файлов резервных копий MySQL из разных БД с разными схемами. Я хочу загрузить резервные копии в наш EDW, но не хочу загружать пустые таблицы.

Сейчас я вырезаю пустые таблицы с помощью AWK для файлов резервных копий, но мне интересно, есть ли лучший способ сделать это.

Если кому-то интересно, это мой скрипт на AWK:

РЕДАКТИРОВАТЬ: сегодня я заметил, что этот скрипт имеет некоторые проблемы, пожалуйста, будьте осторожны, если вы действительно хотите попробовать его использовать. Ваш вывод может быть НЕПРАВИЛЬНЫМ ... Я опубликую свои изменения по мере их внесения.

# File: remove_empty_tables.awk
# Copyright (c) Northwestern University, 2010
# http://edw.northwestern.edu

/^--$/ {
  i = 0;
  line[++i] = $0; getline

  if ($0 ~ /-- Definition/) {
    inserts = 0;
    while ($0 !~ / ALTER TABLE .* ENABLE KEYS /) {
      # If we already have an insert:
      if (inserts > 0)
        print
      else {
        # If we found an INSERT statement, the table is NOT empty:
        if ($0 ~ /^INSERT /) {
          ++inserts
          # Dump the lines before the INSERT and then the INSERT:
          for (j = 1; j <= i; ++j) print line[j]
          i = 0
          print $0
        }
        # Otherwise we may yet find an insert, so save the line:
        else line[++i] = $0
      }
      getline # go to the next line
    }
    line[++i] = $0; getline
    line[++i] = $0; getline
    if (inserts > 0) {
      for (j = 1; j <= i; ++j) print line[j]
      print $0
    }
    next
  } else {
    print "--"
  }
}

{
  print
}

1 Ответ

0 голосов
/ 26 февраля 2010

Я не могу вспомнить ни одного параметра в mysqldump, который пропустил бы пустые таблицы в вашей резервной копии. Может быть, вариант -where, но не уверен, что вы можете сделать что-то общее. ИМХО постобработка во втором сценарии не так уж и плоха.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...