当前位置: 首页 > 面试题库 >

如何处理mysqldump创建的巨大行长度

沙柏
2023-03-14
问题内容

我在cron作业中使用mysqldump备份了超过200万行的数据库。

它会创建一个文本文件,该文件可用于从命令行还原数据日志。

我认为在还原之前编辑转储将是有用的,这是一种 快速 更改值和表或列名的方法-至少要等到我了解更多并对使用ALTER和UPDATE做到这一点充满信心为止。

编辑大型文本文件不会打扰我,但是我惊讶地发现,在数据库的 250兆字节 转储中, 只有大约300行 。每行的长度约为80万个字符。

还有另一种生成转储的方式,可以更好地控制行长吗?

还是应该使用sed或Perl之类的工具对转储进行后处理?


问题答案:

默认情况下, 每个表mysqldump仅生成一个INSERT命令,从而为每个转储的
生成一行(很长)的插入数据。这实质上是因为“批”插入比INSERT为每个表中的每个记录生成单独的查询要快得多。

因此,并不是mysqldump创建任意长的行,而是可以加上其他截止长度。排长是有原因的。

如果将INSERTs分解成多行是非常重要的,则可以使用以下命令表明这一点:

mysqldump --extended-insert=FALSE --complete-insert=TRUE ...

但是请注意,以这种格式恢复表将花费更长的时间。



 类似资料:
  • 问题内容: 我面对的是153个字符长的特定行。现在,我倾向于在120个字符后断开字符(当然,这在很大程度上取决于我所在的位置和当地的约定。)但是,老实说,我在任何地方断开该行都会使它看起来很糟。因此,我正在寻找一些有关该怎么做的想法。 这是一行: 我对如何/在何处打破界限(以及为什么)以及缩短界限本身的想法持开放态度。 我们不是Java商店,也没有针对此类事情的本地约定,或者显然我会简单地遵循它们

  • 问题内容: 我目前在一个项目中,其中的代码中有大约3000行的SQL字符串。 该项目是一个Java项目,但是这个问题可能适用于任何语言。 无论如何,这是我第一次见到如此糟糕的东西。该代码库是遗留的,因此我们可以突然迁移到Hibernate或类似的东西。 您该如何处理非常大的SQL字符串? 我知道这很不好,但是我不知道建议什么是最好的解决方案。 问题答案: 在我看来,将那些硬编码的值放入存储过程中,

  • 我想为大量数据(如整数)创建数组。这个数组将是2D矩阵的表示。< br >我不能使用STL,因为它将与CUDA一起运行。< br >我想知道以下选项的利弊: int arr[SIZE]-这是创建数组的最简单方法。它在堆栈上分配,因此它将是最快的-这里的问题是大小非常有限。 int*arr=new int[SIZE] int**arr=new int*[DIM1]-如果我们考虑效率,这是最坏的情况,

  • 问题内容: 我有相对较小的对象的巨大(〜7GB)json数组。 有没有一种相对简单的方法可以过滤这些对象而无需将整个文件加载到内存中? --stream 选项看起来合适,但我不知道如何将[path,value]的流折叠到原始对象。 问题答案: jq 1.5具有流解析器。jq FAQ提供了一个示例,该示例如何将JSON对象的顶级数组转换为其元素流: 这可能足以满足您的目的,但是值得注意的是setpa

  • 问题内容: 问题定义: 我有一个包含大量数据(超过100,000行)的数据库表,表结构像 每个applicationID可能有成千上万的文档,我必须获取按applicationID分组的状态为0的文档数和状态为1的文档数。 当我使用hibernate方式映射该对象时,由于大量的表数据,它将占用大量的堆内存。 如何使用Hibernate查询实现这一目标? 还是我应该为此使用SQL查询或存储过程? 注

  • 问题内容: 我正在使用numpy并尝试创建一个巨大的矩阵。这样做时,我收到内存错误 由于矩阵并不重要,因此我将向您展示如何轻松重现错误的方法。 毫不奇怪,这把我扔了 我想讲两件事: 我真的需要创建和使用一个大矩阵 我认为我有足够的RAM来处理此矩阵(我有24 Gb或RAM) 有没有一种简单的方法可以处理numpy中的大型矩阵? 为了安全起见,我之前阅读过这些帖子(听起来很相似): 使用Python