我遇到了一个问题,为了便于使用,我希望能够格式化命令行 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'
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 Phpmyadmin 转储数据库时,使用--extended-insert,每一行都转储到一个新行(如上例所示)。我已经浏览了 Phpmyadmin,但找不到任何可以解释这一点的文档。
有没有人能够对此有所了解?
从我所做的谷歌搜索来看,这似乎是不可能的mysqldump。您必须将输出通过管道传输到其他内容,例如sed:
$ mysqldump --extended-insert ... database | sed 's$),($),\n($g'
该特定 sed 命令将查找字符串 "),(" 并在逗号后放置一个换行符。
小智 5
使用正则表达式来分割行是不够的,您需要一个能够正确理解引号和转义字符的解析器。
\n\n我刚刚写了一个解析器,因为我找不到一个解析器: http: //blog.lavoie.sl/2014/06/split-mysqldump-extended-inserts.html
\n| 归档时间: |
|
| 查看次数: |
7431 次 |
| 最近记录: |