mysql - 如何在执行 SQL 转储时替换某些列的值

标签 mysql sql dump

我需要执行常规 SQL 转储来保存数据库,但在表“users”中,列“name”和“firstname”必须是匿名的(通过使用随机字符串或其他方式更改值)。 我想知道如何转储数据并同时更改这些列的值?

这适用于 MySQL 数据库

最佳答案

您无法使用 mysqldump 工具执行此操作。它没有任何转换输出的选项,它只转储数据库中的数据。因此,如果您使用 mysqldump,您的选择是:

  • 存储匿名数据并转储该数据(如@DroidX86 在上面的评论中建议的那样)
  • 真正擅长sed并使用它来过滤mysqldump的输出。我非常擅长使用 sed,但我不会尝试这样做。

因此,您可以尝试在不使用 mysqldump 的情况下转储数据,这样您就有更多选项对数据进行自定义转换。

您可以编写一个脚本来SELECT ... FROM MyTable;,这基本上就是mysqldump的作用。但是,如果您编写自己的工具,则可以使用表达式对名称和名字进行匿名化,而不是按原样转储这些列的内容。

但是,编写自己的 mysqldump 替代品比听起来更难。一些开发人员已经尝试过,但结果却大错特错。我之前回答过相关问题:

关于mysql - 如何在执行 SQL 转储时替换某些列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55538041/

相关文章:

jquery - 通过 ajax 调用将文本加载到 textarea

mysql - 使用 Propel ORM 左连接选择

c++ - Qt/C++ 中的加密安全伪随机数生成器(跨平台)

Java 转储一个对象

node.js - 如何从meteor/nodejs应用程序收集内存转储?

linux - 从正在运行的 nginx 进程中转储 conf

MySQL 选择一个字段中的值与另一表中的值匹配的行

mysql - 从另一个表中选择具有两个不同外键的同一列

mysql - 使用 MySql 用户变量的分歧

SQL检查组是否包含给定列的某些值(ORACLE)