之前在导数据库数据的时候,忘记将字段的注释导过来了。现在需要将所有字段都加上注释(崩溃)。由于导数据的过程比较长,业务那边从原始数据库导出了一个 Excel,里面有所有字段的注释,然后让我们根据这个注释一个个加。
MySQL添加注释语句
之前以为给MySQL字段添加注释很容易,但是找了下都是需要同时修改字段类型的,和我们的需求不符。比如
ALTER TABLE tb_name MODIFY COLUMN name col_type COMMENT "注释";
上面的修改语句中都需要指定新的字段类型才能加新的注释,但是我们又不知道字段的具体类型,这个方式行不通。
最后在网上找了一个修改元数据表的方法来添加注释。
UPDATE information_schema.COLUMNS t SET t.column_comment = "注释" WHERE t.TABLE_SCHEMA= "schema1" AND t.table_name="tbl_name" AND t.COLUMN_NAME= "col_name"
使用 Excel 拼接 SQL
业务给到我们的 Excel 文件内容如下:
inner_code | trading_day | prev_close_price | open_price | high_price | low_price |
---|---|---|---|---|---|
内码 | 交易日 | 昨收 | 开盘价 | 最高价 | 最低价 |
第一行是表的具体字段,第二行是字段的具体注释。作为一个程序员,我发现这个操作可以通过 Excel 进行 SQL 拼接。具体做法如下:
step1:拷贝第一行的字段到另一个sheet页,并进行转列复制(见红色方框)
行转列后效果如下:
step2:将注释列进行同样的行转列复制
step3:通过Excel字符串拼语句进行拼接
我们只需要在C3列输入以下拼接语句就可以进行sql拼接了,然后使用Excel的下拉功能可以进行所有字段的注释脚本拼接。
="UPDATE information_schema.COLUMNS t SET t.column_comment = '" & A1 & "' WHERE t.TABLE_SCHEMA='schema1' AND t.table_name='tbl_name' AND t.COLUMN_NAME='" & B2 & "';"
上面的拼接语句中:
- 拼接用&
- 拼接的内容需要用“”引起
- 如果是日期单元格,拼接内容需要将其转为TEXT文本内容再进行拼接,否则会显示错误内容