我需要执行常规 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/