需要提取mysqldump出来的sql文件中数据某一列的集合

有这样一个需求,3000多w的数据。用mysqldump导出来。最后生成的sql文件中insert是以一行的形式存在。那么怎么提取中间的某一列的集合呢?

1. 导入到mysql中
这种方法很慢。很慢。如果表中有许多索引。更慢。更慢。。

导到mysql之后。直接select login_name from account into outfile ‘/tmp/account.txt’就可以了

2. 去掉表的索引导入到mysql中

这种方法需要首先使用sed删除建表的语句。只保留insert。

这样导入到mysql中就可以快许多许多。。。

3. 直接从文件中提取

sed ‘s/VALUES (/\n(/g’ account.sql |sed ‘s/),(/),\n(/g’|sed -n ‘/^(/p’|awk -F “‘” ‘{print $2}’ > result.txt

先把第一条INSERT … VALUES这一句与数据之间换行方便处理,然后由于每行数据之间是以'(…),(…),(…)’这种形式出现的。。所以把’),(‘替换成’),\n(‘。然后再打印所有’^(‘开头的行。最后提取每行的第二列就OK了。。