加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

操纵巨大的MySQL转储文件

发布时间:2020-12-13 19:31:47 所属栏目:Linux 来源:网络整理
导读:获取单个表的数据,删除单个表或将整个转储文件拆分为每个包含单个表的文件的最简单方法是什么?我通常最终会做很多vi正则表达式,但我敢打赌用awk / perl等方法可以更简单地处理这些事情.Google结果的第一页带回了一堆非工作的perl脚本. 最佳答案 当我需要从s

获取单个表的数据,删除单个表或将整个转储文件拆分为每个包含单个表的文件的最简单方法是什么?我通常最终会做很多vi正则表达式,但我敢打赌用awk / perl等方法可以更简单地处理这些事情.Google结果的第一页带回了一堆非工作的perl脚本.

最佳答案
当我需要从sql转储中提取单个表时,我使用grep,head和tail的组合.

例如:

grep -n "CREATE TABLE" dump.sql

然后,它会为您提供每个的行号,因此,如果您的表位于第200行,而后一个位于第269行,我会:

head -n 268 dump.sql > tophalf.sql
tail -n 69 tophalf.sql > yourtable.sql

我想你可以扩展这些原则来敲除一个脚本,将每个表分成一个文件.

有人想在这里做吗?

另一点可能有助于启动bash循环:

grep -n "CREATE TABLE " dump.sql  | tr ':`(' '  ' | awk '{print $1,$4}'

这给你一个很好的行号和表名列表,如:

200 FooTable
269 BarTable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读