MySQL欄位新增註釋,但不改變欄位的型別

程式設計師自由之路發表於2020-10-19

之前在導資料庫資料的時候,忘記將欄位的註釋導過來了。現在需要將所有欄位都加上註釋(崩潰)。由於導資料的過程比較長,業務那邊從原始資料庫匯出了一個 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文字內容再進行拼接,否則會顯示錯誤內容

相關文章