MySQLDump uma instrução INSERT para cada linha de dados


178

com a seguinte declaração:

mysqldump --complete-insert --lock-all-tables --no-create-db 
--no-create-info --extended-insert --password=XXX -u XXX 
--dump-date yyy > yyy_dataOnly.sql

Eu recebo instruções INSERT como as seguintes:

INSERT INTO `table` VALUES (1,'something'),(2,'anything'),(3,'everything');

O que eu preciso no meu caso é algo como isto:

INSERT INTO `table` VALUES (1,'something');
INSERT INTO `table` VALUES (2,'anything');
INSERT INTO `table` VALUES (3,'everything');

Existe uma maneira de dizer ao "mysqldump" para criar uma nova instrução INSERT para cada linha? Obrigado pela ajuda!

Respostas:


277

Usar:

mysqldump --extended-insert=FALSE 

Esteja ciente de que várias inserções serão mais lentas que uma grande inserção.


75
--skip-extended-insert aparece a ser a sintaxe correta para mim (usando mysqldump versão 10.13)
— Isaac Betesh

17
Mais devagar, sim, mas muitos editores de texto têm problemas com linhas de texto muito longas e, se as tabelas tiverem uma quantidade enorme de dados, é isso que acontecerá.
— Jahmic

mysqldump --opt --skip-extended-insertou mysqldump --opt --extended-insert=FALSEtrabalho
— Yzmir Ramirez 3/16

AMD! Migrei para uma nova versão que causou esse problema e muitos dos meus scripts automatizados falharam. Eu pensei que estava ferrado, mas isso parece ser uma solução fácil. Obrigado por compartilhar!
— Varun Verma 12/09

11
Isso é bom porque agora eu posso fazer um git diffem dois despejos de banco de dados diferentes e ter uma imagem clara do que foi alterado.
— Rolf

9

Nas versões mais recentes, foram feitas alterações nos sinalizadores: da documentação:

- inserção extendida, -e

Escreva instruções INSERT usando a sintaxe de várias linhas que inclui várias listas VALUES. Isso resulta em um arquivo de despejo menor e acelera as inserções quando o arquivo é recarregado.

--optar

Esta opção, ativada por padrão, é um atalho para a combinação de --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick - set-charset. Ele fornece uma operação de despejo rápido e produz um arquivo de despejo que pode ser recarregado rapidamente em um servidor MySQL.

Como a opção --opt está ativada por padrão, você especifica apenas o inverso, o --skip-opt para desativar várias configurações padrão. Veja a discussão dos grupos de opções do mysqldump para obter informações sobre como ativar ou desativar seletivamente um subconjunto das opções afetadas pelo --opt.

--skip-extended-insert

Desativar inserção estendida

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.