【问题标题】:Not able to access tables from a corrupted MySQL Dump file无法从损坏的 MySQL 转储文件访问表
【发布时间】:2018-09-27 21:36:45
【问题描述】:
grep -n "Table Structure" dumpfile.sql 

返回

XXXXXX:-- Table structure for table `table_name_1`
XXXXXX:-- Table structure for table `table_name_2`
XXXXXX:-- Table structure for table `table_name_3`

但在这一点之后,它会中断。不知道为什么?

还有 为了从巨大的转储文件(大约 489GB)中检索单个表,我使用了:

sed -n -e '/Table Structure 'table_name'/p' dump_file_name.sql > extracted_file.sql

但它无法找到table_name

所以我的问题是。如何访问所有表?或者为什么在某个表之后,找不到表。

请如果有人可以帮助我解决这个问题。这将是一件伟大的事!

【问题讨论】:

  • 你所说的“它坏了”是什么意思?如果转储文件已损坏,则可能这些行不存在。
  • 文件里面的数据太大了。该命令将停止进一步执行。
  • 听起来这个问题在Unix & Linux 上更合适,因为您只是在询问带有大文件的grepsed 命令的行为,而不是关于如何编写sed 表达式。您应该指定您使用的操作系统。

标签: mysql linux unix sed grep


【解决方案1】:

您的sed 命令有两个问题。

首先,您在由单引号分隔的字符串中使用单引号。那是行不通的,因为内引号只会结束 shell 字符串,而不是按字面意思包含。

其次,转储文件中的引号是反引号,而不是单引号。

另外,您的模式中缺少for tablestructure 中的s 应该是小写的。

sed -n -e '/Table structure for table `table_name`/p' dump_file_name.sql > extracted_file.sql

但是你可以只使用grep,你不需要sed

grep 'Table structure for table `table_name`' dump_file_name.sql > extracted_file.sql

【讨论】:

  • 在这种情况下,它仍然会找到所有具有表结构的表,而不是需要的表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多