MySQL dump, retorna cada linha da tabela em uma nova linha usando --extended-insert

2

Estou tendo um problema, onde para facilitar o uso, gostaria de poder formatar uma linha de comando MySQL dump para que cada linha de uma determinada tabela esteja em uma nova linha ao usar a opção --extended-insert .

Normalmente, ao usar --extended-insert , todas as linhas de uma determinada tabela são produzidas em uma linha e, até onde sei, não há como alterar isso, além de pós-processar o dump com perl ou algo parecido. / p>

O formato que estou procurando é:

-- 
-- Dumping data for table 'ww_tbCountry'
-- 

INSERT INTO 'ww_tbCountry' ('iCountryId_PK', 'vCountryName', 'vShortName', 'iSortFlag', 'fTax', 'vCountryCode', 'vSageTaxCode') VALUES (22, 'Albania', 'AL', 1, 0.00, '8', 'T9'),
(33, 'Austria', 'AT', 1, 15.00, '40', 'T9'),
(40, 'Belarus', 'BY', 1, 0.00, '112', 'T9'),
(41, 'Belgium', 'BE', 1, 15.00, '56', 'T9'),
(51, 'Bulgaria', 'BG', 1, 15.00, '100', 'T9'

No entanto, quando eu despejo um banco de dados usando Phpmyadmin, usando --extended-insert , cada linha é despejada em uma nova linha (como mostrado pelo exemplo acima). Eu passei por Phpmyadmin e não consigo encontrar qualquer documentação que explique isso.

Alguém é capaz de lançar alguma luz sobre isso?

    
por soopadoubled 17.05.2010 / 14:37

2 respostas

4

Do googling que fiz, parece que isso não é possível através do mysqldump . Você precisa canalizar a saída para outra coisa, como sed :

$ mysqldump --extended-insert ... database | sed 's$),($),\n($g'

Esse comando sed específico irá procurar pela string "), (" e colocar uma nova linha após a vírgula.

    
por 18.06.2010 / 21:45
3

Usar um regex para dividir linhas não é suficiente, você precisa de um analisador que entenda corretamente as citações e os caracteres que escapam.

Acabei de escrever um analisador porque não consegui encontrar um: link

    
por 20.06.2014 / 21:29

Tags