( Редактировать Конечно, принятый ответ правильный. Никто в здравом уме не делает столбец со значением по умолчанию "AUTO_INCREMENT = 123")
Борясь с тем же вопросом и читая предупреждение о ссылках на sed-решение, я дал вывод --xml
из вихря, и я нашел рабочее решение без ошибок (например, кто-то создает колонку со значением по умолчанию "AUTO_INCREMENT = 123" - извлечено, я знаю, но все же ...):
mysqldump \
--xml \
--compact \
--no-data \
mydb |
xmlstarlet ed -d '
//key/@Cardinality |
//options/@Rows |
//options/@Avg_row_length |
//options/@Data_length |
//options/@Auto_increment |
//options/@Index_length
' |
xmllint --format -
По сути, он удаляет некоторые значения, используя xmlstarlet, который, как я видел, различался (даже из последовательных дампов одной и той же базы данных). Таблица стилей XSLT может выполнять ту же работу.
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="mydb">
<table_structure name="SomeTable">
<field Field="foo" Type="int(12)" Null="NO" Key="PRI" Extra="" Comment=""/>
<field Field="bar" Type="int(11)" Null="NO" Key="PRI" Extra="" Comment=""/>
<field Field="baz" Type="int(11)" Null="NO" Key="PRI" Extra="" Comment=""/>
<key Table="AccessControlList" Non_unique="0" Key_name="PRIMARY"
Seq_in_index="1" Column_name="referenceID" Collation="A" Null=""
Index_type="BTREE" Comment="" Index_comment=""/>
<options Name="SomeTable" Engine="InnoDB" Version="10" Row_format="Compact"
Max_data_length="0" Data_free="0" Create_time="2012-09-11 15:31:11"
Collation="utf8_general_ci" Create_options="" Comment=""/>
[...]
(для удобства чтения добавлены новые строки между атрибутами XML; их нет в выводе xmllint)