только данные mysqldump

Ответы:

553
mysqldump --no-create-info ...

Также вы можете использовать:

  • --skip-triggers: если вы используете триггеры
  • --no-create-db: если вы используете --databases ...опцию
  • --compact: если вы хотите избавиться от лишних комментариев
Матей
источник
47
Вот полный cmd для копий пастеровmysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
Измир Рамирес
2
Если вы получаете Access denied for user ... to database '...' when doing LOCK TABLES, используйте--single-transaction
Rolf
@YzmirRamirez спасибо, но, к вашему сведению, в Windows мне пришлось использовать двойные кавычки --where. Например,--where="id=2"
Kip
Это был блестящий вкладчик для меня. Спасибо.
Кен Ингрэм
149

Это должно работать:

# To export to file (data only)
mysqldump -u [user] -p[pass] --no-create-info mydb > mydb.sql

# To export to file (structure only)
mysqldump -u [user] -p[pass] --no-data mydb > mydb.sql

# To import to database
mysql -u [user] -p[pass] mydb < mydb.sql

ПРИМЕЧАНИЕ: между -p& нет места[pass]

Иш
источник
12
--no-create-dbизбыточно при использовании--no-create-info
Джеймс МакМэхон
4
Пробел -pв порядке
спасибо
12
Как правило, лучше просто использовать -p без указания пароля, чтобы пароль не сохранялся в вашей истории bash (вам будет предложено ввести пароль после выполнения команды).
Дан
2
В дополнение к совету @ Dan он также делает пароль видимым для любого пользователя, который может перечислить текущие процессы ( ps -ef)
TMG
1
Оставив пароль после того, как -pопция mysqldumpпредложит ввести пароль.
Мелле
22
 >> man -k  mysqldump [enter in the terminal]

Вы найдете ниже объяснение

--no-create-info, -t

Не пишите операторы CREATE TABLE, которые воссоздают каждую выведенную таблицу. Примечание. Этот параметр не исключает операторов, создающих группы файлов журналов или табличные пространства из вывода mysqldump; однако для этой цели вы можете использовать опцию --no-tablespaces.

--no-data, -d

Не записывайте какую-либо информацию о строках таблицы (то есть не создавайте дамп содержимого таблицы). Это полезно, если вы хотите вывести только таблицу CREATE TABLE для таблицы (например, создать пустую копию таблицы, загрузив файл дампа).

# To export to file (data only)
mysqldump -t -u [user] -p[pass] -t mydb > mydb_data.sql

# To export to file (structure only)
mysqldump -d -u [user] -p[pass] -d mydb > mydb_structure.sql
Красавица надар
источник
3
Есть ли причина для двойного использования опций '-t' и '-d'?
Эрвана
19

Если вам нужны запросы INSERT, используйте следующее:

mysqldump --skip-triggers --compact --no-create-info

Джонатан
источник
спасибо за --compactчто избавляется от лишних комментариев заявления
chiliNUT
2

Рекомендую использовать следующий фрагмент. Прекрасно работает даже с огромными таблицами (в противном случае вы откроете дамп в редакторе и удалите ненужные вещи, верно?;)

mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql

Требуется хотя бы mysql 5.x , но кто сейчас запускает старые вещи .. :)

wuzer
источник
Недавно я столкнулся с ситуацией, когда мне пришлось подключиться к системе, которая использовала 4.x на производстве. У них были пробелы в именах таблиц и столбцов, и, на мой взгляд, они делали в основном все неправильно.
Элквис
0

Попробуйте сделать дамп в файл с разделителями.

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,
ed209
источник
0

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

ERROR 1235 (42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

Как уже упоминалось выше:

mysqldump --no-create-info

Экспортирует данные, но также экспортирует операторы создания триггера. Если вы похожи на меня, вы выводите структуру базы данных (которая также включает триггеры) с помощью одной команды, а затем с помощью указанной выше команды для получения данных вы также должны использовать '--skip-triggers'.

Так что если вы хотите просто данные:

mysqldump --no-create-info --skip-triggers
Бен Вейн
источник