MySQL转储,在使用–extended-insert的同时在新行上输出每个表行

我遇到了一个问题,为了方便使用,我希望能够格式化命令行MySQL转储,以便在使用--extended-insert选项时,给定表的每一行都在新行上。

通常当使用--extended-insert ,给定表的每一行都是在一行中输出的,据我所知,没有办法改变这个,除了用perl等后处理转储。

我正在寻找的格式是:

 -- -- 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' 

但是,当我使用Phpmyadmin转储数据库时,使用--extended-insert ,每一行都被转储到一个新行(如上面的示例所示)。 我已经通过Phpmyadmin,找不到任何文件来解释这一点。

有没有人可以解释这一点?

从我做的谷歌search,似乎这是不可能通过mysqldump本身。 您必须将输出传递给其他东西,例如sed

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

那个特殊的sed命令会查找string“),(”,并在逗号后加一个换行符。

使用正则expression式分割线是不够的,你需要一个parsing器,将正确理解引号和转义字符。

我只是写了一个parsing器,因为我找不到一个: http : //blog.lavoie.sl/2014/06/split-mysqldump-extended-inserts.html