我有一个超过 1 TB 的 MySQL 转储文件。我需要从中提取 CREATE TABLE 语句,以便提供表定义。
我购买了 Hex Editor Neo,但我有点失望。我创建了一个正则表达式CREATE\s+TABLE(.|\s)*?(?=ENGINE=InnoDB)
来提取 CREATE TABLE 子句,这似乎在 NotePad++ 中运行良好。
但是,提取所有实例的 ETA 超过 3 小时,我什至无法确定它是否正确执行。我什至不知道这些行是否可以在完成后导出。
有没有一种快速的方法可以在我的 Ubuntu 机器上使用 grep 或其他方式执行此操作?
更新
跑了一夜,输出文件为空白。我创建了一个较小的数据子集,但该过程仍然无法正常工作。然而,它在正则表达式测试器中工作,但 grep 不喜欢它并产生空输出。这是我正在运行的命令。我会提供样品,但我不想为我的客户泄露机密。这只是一个标准的 MySQL 转储。
grep -oP "CREATE\s+TABLE(.|\s)+?(?=ENGINE=InnoDB)" test.txt > plates_schema.txt
更新部分
之后的新行似乎不匹配CREATE\s+TABLE
。