惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
L
LangChain Blog
博客园_首页
Recent Announcements
Recent Announcements
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
博客园 - 叶小钗
博客园 - 【当耐特】
The Cloudflare Blog
J
Java Code Geeks
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans

轶哥博客

blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog
blog
2022-02-23 · via 轶哥博客

MySQL批量重命名表名和列名,修改表名为大驼峰,列名为小驼峰。

最近公司项目重构,为了适应Prisma的习惯,保持数据库字段命名方式和代码模式一致,特地编写此脚本实现批量重命名已存在的表名和列名。

import mysql from 'mysql2/promise'
import toPascalCase from 'js-pascalcase'
import toCamelCase from 'js-camelcase'

const onlyShowSQL = true

// create the connection to database
const connection = await mysql.createConnection({
  host: 'localhost',
  port: 3306,
  user: 'root',
  database: 'example',
  password: 'password'
})

const [results] = await connection.query('SHOW TABLES;')

const tableNameList = results.map(i => Object.values(i)[0])

tableNameList.forEach(async tableName => {
  const sql = "ALTER TABLE `" + tableName + "` RENAME TO `" + toPascalCase(tableName) + "`;"
  if (onlyShowSQL) {
    console.log(sql)
  } else {
    await connection.query(sql)
  }

  const [columnList] = await connection.query("SHOW COLUMNS FROM `" + (onlyShowSQL ? tableName : toPascalCase(tableName)) + "`;")

  columnList.forEach(async column => {
    const sql = "ALTER TABLE `" + tableName + "` RENAME COLUMN`" + column.Field + "` TO `" + toCamelCase(column.Field) + "`;"
    if (onlyShowSQL)
      console.log(sql)
    else {
      await connection.query(sql)
    }
  })
})

console.log('Finished.')

Require Node.js >= 17.6.0