回覆列表
  • 1 # 使用者7856883820407

    對於oracle來說,只有資料庫字符集這個說法,不存在什麼表字符集和欄位字符集。你說的這個是mysql的字符集,資料庫字符集可以和表字符集不同,也可以和列字符集不同,也就是說,你的資料庫字符集為utf8的話,表字符集可以是latin,列字符集可以是gb2312。統一修改表字段字符集沒有直接的sql,可以在建表的時候:

    create table t (id int primary key,name varchar(100) character set gbk,name1 varchar(100)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    這樣的話:

    可以看到,name(指定)用了gbk而name1(預設)用了Latin1字符集。

    如果你想修改整體的欄位字符集,可以考慮這麼做:

    1、重建,匯出後修改匯入的指令碼的字符集部分實現,這個方法可能不適合資料量很大的資料庫。

    2、寫指令碼或者儲存過程實現,具體方法為利用information_schema的COLUMNS表的表名和列名建立遊標,拼湊出類似:

    alter table 表名 modify column "欄位名" varchar(30) character set gbk not null;

    產生後的語句批次執行即可。

    請注意,這種做法會鎖表,可能會對生產環境產生不可預料的影響,請斟酌執行。

  • 中秋節和大豐收的關聯?
  • 圍棋專業術語100句?