MySql指字段扩容脚本批量生成

本文介绍了一个针对MySQL数据库中商品编码字段进行扩容的脚本,适用于处理客户编码变长的情况,通过查询information_schema表动态修改`item_code`字段的数据类型并保持默认值或注释。
摘要由CSDN通过智能技术生成

MySql指字段扩容脚本批量生成

背景

比如,我们做的是一套定制化ERP系统。某一个客户他们的商品编码或sku,与咱们最初设计的不一致,新客户的编码很长。此时,商品编码分布在各个业务库、业务表中。

上脚本

SELECT
	concat(
		"ALTER TABLE ",
		"`",
		col.TABLE_NAME,
		"`", " modify ", "`",
		col.COLUMN_NAME,
		"`", " ", ' varchar(128) ', " ",
	IF ( col.IS_NULLABLE = 'NO', " NOT NULL ", "" ),
		IF ( col.COLUMN_DEFAULT IS NULL,
			IF ( col.EXTRA = 'auto_increment' OR col.IS_NULLABLE = 'NO', " ", " DEFAULT null " ),
			concat( " DEFAULT ", IF ( col.DATA_TYPE = 'timestamp' OR col.DATA_TYPE = 'bit', col.COLUMN_DEFAULT, concat( "'", col.COLUMN_DEFAULT, "'" ) )) 
		),
	IF
		( col.EXTRA IS NULL, " ", concat( " ", col.EXTRA, " " ) ),
		" COMMENT ",
		" ",
		"'",
		col.COLUMN_COMMENT,
		"'",
		";" 
) change_column_type 
FROM
	information_schema.COLUMNS col
	JOIN information_schema.TABLES tbl ON col.TABLE_SCHEMA = tbl.TABLE_SCHEMA 
	AND col.TABLE_NAME = tbl.TABLE_NAME 
WHERE
	col.TABLE_SCHEMA = 'mdmbase' 
	AND col.column_name = 'item_code' 
	AND tbl.TABLE_TYPE = 'BASE TABLE';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值