将mysql转储更改为不包含auto-inc列

时间:2014-08-18 09:39:05

标签: mysql bash unix sed

我有一个我想要恢复的mysqldump文件,但与它的构建方式不同。它包含一个我想删除的自动增量列。

转储文件如下所示:(第一列是auto-inc)

INSERT INTO `my_table` VALUES (833899644,461796098,'Wed',21,12),(833899645,423455772,'Sun',3,3)
...

所以我认为我需要将其更改为:(删除第一个数字)

INSERT INTO `my_table` VALUES (461796098,'Wed',21,12),(423455772,'Sun',3,3)

这个转储很大(20GB),但我认为sed可以很容易地处理,但不知道如何。非常感谢sed /其他选项的解决方案。

2 个答案:

答案 0 :(得分:2)

为了简单起见,请删除从左括号到第一个逗号的所有内容。

如果您希望更改到位,请使用:

sed -i -r "s/\([^,]+,/\(/g" file

如果要将其保存在另一个文件中:

sed -r "s/\([^,]+,/\(/g" file > outfile

答案 1 :(得分:0)

您可以尝试使用以下sed命令删除第一个数字以及以下逗号

sed 's/^\([^0-9]*\)[0-9]\+,\(.*\)$/\1\2/g' file