mysql批量修改排序規則

2021-10-14 15:54:31 字數 2266 閱讀 9957

公司開發伺服器最近公升級了mysql8,為了適配開發人員本機的mysql5.7,需要把所有資料庫,資料表,表字段自動設定的utf8mb4_0900_ai_ci排序規則改為utf8mb4_general_ci

字段修復

#改變字段資料

select table_schema '資料庫'

,table_name '表'

,column_name '字段'

,character_set_name '原字符集'

,collation_name '原排序規則'

,concat(

'alter table '

, table_schema,

'.',table_name,

' modify column '

,column_name,

' ',column_type,

' character set utf8mb4 collate utf8mb4_general_ci;'

)'修正sql'

from information_schema.

`columns

`where collation_name rlike

'utf8mb4_0900_ai_ci'

;

utf8mb4_0900_ai_ci 是我demo的模糊匹配排序規則,這裡需要替換為你資料庫中需要替換的字段的排序規則,utf8mb4設定的是替換的字符集,utf8mb4_general_ci設定的是替換的排序規則,可以換為需要修正為什麼標準。

把修正的sql複製出來執行,字段標準就修復了。

表修復

#改變表

select table_schema '資料庫'

,table_name '表'

,table_collation '原排序規則'

,concat(

'alter table '

,table_schema,

'.', table_name,

' collate=utf8mb4_general_ci;'

)'修正sql'

from information_schema.

`tables

`where table_collation rlike

'utf8mb4_0900_ai_ci'

;

表修復只需要設定排序規則,字符集會自動設定到正確的標準,替換的話,跟上面一樣。

同樣的,把sql複製出來執行,表就會修復了。

資料庫修復

#修改資料庫

select schema_name '資料庫'

,default_character_set_name '原字符集'

,default_collation_name '原排序規則'

,concat(

'alter database '

,schema_name,

' character set utf8mb4 collate utf8mb4_general_ci;'

)'修正sql'

from information_schema.

`schemata`

where default_character_set_name rlike

'utf8'

;

資料庫修復,需要設定字符集和排序規則,這裡utf8是模糊匹配需要修正的資料庫的字符集,也可以用default_collation_name 排序規則來篩選,這些都很靈活,因為我們工程是分庫的,所以沒有匹配資料庫

如果需要選定到資料庫,就用schema_name 匹配一下就行了

activiti表名全部改小寫

select concat(

'alter table '

,table_name ,

' rename '

,lower(table_name)

,";"

)as statement from information_schema.

tables

where table_schema =

'***'

and table_name like

'act%'

;

lower: 轉換為小寫

upper: 轉換為大寫

table_schema = 『***』 指定庫名,避免不必要的問題

table_name like 『act%』 已act 開頭的表

將查詢出來的sql粘出來執行就可以了

mysql批量修改表

select concat alter table table name,add column isdel varchar 2 default 1 comment 是否刪除1 正常 0 刪除 from information schema.tables where table name like t...

Mysql的批量修改

mysql中 我們經常用到update對乙個物件進行修改。如果某個filed的內容是123xyz890的話呢,通過下面的修改將會把該物件變為123abc890。update table name set filed name 123abc890 where 如果我們要將所有包含有xyz的物件中的xy...

Mysql 排序規則選擇

排序規則 是指對指定字符集下不同字元的比較規則。其特徵有以下幾點 1 兩個不同的字符集不能有相同的排序規則 2 兩個字符集有乙個預設的排序規則 3 有一些常用的命名規則。如 ci結尾表示大小寫不敏感 caseinsensitive cs表示大小寫敏感 case sensitive bin表示二進位制...