Как я могу избавиться от этих комментариев в дампе MySQL?

Я пытаюсь создать простую структуру только дамп моей базы данных. Используя mysqldump дает мне результат как:

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

DROP TABLE IF EXISTS `foo`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;

Независимо от того, что я пробую, я просто, может казаться, не избавляюсь от тех комментариев.

Я в настоящее время использую: mysqldump -p -d --add-drop-table --skip-tz-utc --skip-set-charset -h 127.0.0.1 -u foo bar --result-file=dumpfile.sql

Править: Я действительно однако хочу сохранить другие комментарии, такой как -- MySQL dump 10.13 Distrib 5.1.41, for Win32 (ia32)

76
задан etheros 16 December 2009 в 17:58
поделиться

6 ответов

ВОЗ! На самом деле это не комментарии, хотя они и выглядят именно так. Это токены условного выполнения.

Возьмите эту строку:

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

Если версия mySQL 4.00.14 или выше , то сервер MySQL выполнит этот оператор.

Этот волшебный комментарий синтаксис задокументирован в разделе руководства Синтаксис комментария .

Вероятно, вы не хотите избавляться от этого материала.

151
ответ дан 24 November 2019 в 11:06
поделиться

Попробуйте - skip-comments ?

Спасибо

Изменить:

Понятно .. Попробуйте это

--skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset

Поиграйте, чтобы удалить некоторые из варианты, пока вы не получите желаемый результат, в основном это то же самое, что и - компактный без - skip-comments

- skip-comments удаляет комментарии, относящиеся к версии и прочее ..

30
ответ дан 24 November 2019 в 11:06
поделиться

Вы пробовали использовать ярлык - compact ?

Информация здесь .

16
ответ дан 24 November 2019 в 11:06
поделиться

Технически строки, от которых вы пытаетесь избавиться, не являются комментариями. Они временно изменяют некоторые переменные в начале, а затем сбрасывают их на предыдущее значение в конце.

Они не очень полезны (но они также безвредны) в вашем случае, поскольку вы используете --no -data, но я подумал, что стоит упомянуть, что строки служат определенной цели, а не являются просто комментариями.

12
ответ дан 24 November 2019 в 11:06
поделиться

Поскольку вы работаете в Windows, если никто не найдет лучшего решения, вы можете вместо этого использовать скрипт Python:

import re, sys
sql = sys.stdin.read()
regex = re.compile(r'/\*![^\n]* \*/;\n', re.M)
print regex.sub('', sql)

Использование из командной строки:

python program.py < your.sql > output.sql

Он удаляет все подобные строки :

/*!....... */;
0
ответ дан 24 November 2019 в 11:06
поделиться

Возможно выполнение регулярного выражения для удаления строк, содержащих 40014 или 40111 и т. Д.

0
ответ дан 24 November 2019 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: