代码之家  ›  专栏  ›  技术社区  ›  London Smith

更改包含某些字符的表的所有列

  •  1
  • London Smith  · 技术社区  · 5 年前

    SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME LIKE "%_euro"
        AND TABLE_SCHEMA='my_database'
    

    例如,对于名为 price_total_euro 我想改名为 price_total

    2 回复  |  直到 5 年前
        1
  •  2
  •   Luuk WHIP    5 年前

    使用以下SQL创建脚本:

    SELECT CONCAT("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," RENAME COLUMN ",COLUMN_NAME," TO ",REPLACE(COLUMN_NAME,"_euro",""),"; ")
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME LIKE "%_euro"
    

    ALTER TABLE test.t1_euro RENAME COLUMN t1_euro TO t1;
    

    检查脚本,并在数据库上执行它(在备份之后…)

        2
  •  0
  •   mshahien    5 年前
        3
  •  0
  •   IdrisSan    5 年前

    如果使用python和MySQL连接器,可以将列标题放入一个列表中,然后通过for循环运行它?

    for name in table_names:
        if name.endswith("_euro"):
            new_name = name.replace("_euro", "")