跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 数据库如何批量替换任意字段的某字符串
未分類
19 1 月 2021

数据库如何批量替换任意字段的某字符串

数据库如何批量替换任意字段的某字符串

資深大佬 : iblessyou 6

看标题也不难猜了,我这是因为要做数据脱敏,数据库使用的 postgres

以前给组织 A 做过的项目,现在几十个表,要求将所有表所有字段里出现的“组织 A”都替换成 XXX 。 尝试用了 Navicat 的模式查询,可以查到,但是改着不方便。 这个有简单点的办法吗

大佬有話說 (10)

  • 資深大佬 : Te11UA

    `UPDATE table SET 组织名字 = replace(组织名字, ‘组织 A’, ‘XXXX’)`
    这个?

  • 資深大佬 : codingadog

    把表导出成 excel 或 sql
    然后全局搜索替换
    然后重新导入

  • 資深大佬 : kaiki

    也可以直接把查询到的需要修改的部分导出,用外部程序批量正则修改再进行更新

  • 資深大佬 : levelworm

    应该可以查询到每张表每列的名字吧,然后做个小程序更新一下?
    找了一下 Stackoverflow 有人做了个 Perl 的程序:
    https://stackoverflow.com/questions/29211779/how-can-i-change-all-occurrences-of-a-particular-value-in-any-column-in-postgres

  • 資深大佬 : id4alex

    你需要用元数据的列记录 去拼接 SQL concat(‘REPLACE(‘,column_name’,”组织 A’,’XXXX’) as ‘,column_name)
    类似的操作去生成那个 SELECT 语句.

    select * from INFORMATION_SCHEMA.columns

    你可以先看看这个 INFORMATION_SCHEMA 元数据库

  • 主 資深大佬 : iblessyou

    @Te11UA 字段不固定,可能是组织名字段,也可能地址、设备名什么乱七八糟里面会包含

  • 主 資深大佬 : iblessyou

    @codingadog 不行的,数据量比较大

  • 主 資深大佬 : iblessyou

    @levelworm
    @id4alex
    谢谢,目前看到这个是较可行的解决思路了:
    先获取所有字符串类型的字段和所在表,再批量生成更新语句。

  • 資深大佬 : id4alex

    @iblessyou 可以通过 SQL 去生成 SQL 再执行生成的 SQL 。

    这种脱敏的需求可以做到自动化的。

  • 資深大佬 : heysnakelis

    SELECT
    TABLE_NAME,
    COLUMN_TYPE,
    COLUMN_NAME,
    CONCAT(
    ‘select `’,COLUMN_NAME,’` as data ,”‘,COLUMN_NAME,'” as column_name ,”‘,TABLE_NAME,'” as table_name from ‘,
    TABLE_NAME,
    ‘ where `’,
    COLUMN_NAME,
    ‘` like “%关键字%” or `’,COLUMN_NAME,’` like “%关键字%” ‘ , “UNION ”
    )
    FROM
    information_schema.`COLUMNS`
    WHERE
    TABLE_SCHEMA = ‘test’

    参考下,select 改成 update

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具