本文目錄一覽:
如何對mysql中的字符進行編碼轉換
首先,到mysql\bin
下面,利用mysqldump這個工具,執行以下命令:
mysqldump
–u=root
-p
–default-character-set=latin1
–set-charset=utf8
–skip-opt
–result-file=c:\mytable.sql
mydb
mytable
其中:root
為數據庫登錄名,
latin1
為源表(就是想進行轉碼的表)的編碼,
utf8
為想轉換成的編碼,
c:\mytable.sql
為導出的數據的存放文件(臨時用),
mydb是源表所屬的數據庫(schema),mytable
就是源表名了
執行這條命令,會提示輸入密碼,輸入正確的密碼以後,就開始導出數據了。等到數據全部導出以後,可以用ue等工具打開,這時可以看到這些數據的編碼已經轉變了。
然後需要對這個文件進行一點點更改。在文件的最開頭有一個建表語句。類似於:
Java代碼
CREATE
TABLE
`mytable`
(
`tableid`
bigint(20)
unsigned
NOT
NULL,
`c1`
int(10)
unsigned
NOT
NULL
default
‘0’,
`c2`
int(10)
unsigned
NOT
NULL
default
‘0’,
PRIMARY
KEY
(`tableid`)
);
注意看最後的分號,缺少了一點點東西:engine=myisam
DEFAULT
CHARSET=utf8
engine
和
charset
的意義地球人都知道啊…
將這一段加進去。結果可能是這樣:
Java代碼
CREATE
TABLE
`mytable`
(
`tableid`
bigint(20)
unsigned
NOT
NULL,
`c1`
int(10)
unsigned
NOT
NULL
default
‘0’,
`c2`
int(10)
unsigned
NOT
NULL
default
‘0’,
PRIMARY
KEY
(`tableid`)
)
engine=myisam
DEFAULT
CHARSET=utf8;
其中engine
和
charset
改成期望的東西,如:innodb
gbk
等…
保存文件。(如果是用UE等工具即使文件大也不會等太久,如果用記事本打開的……恭喜你!
)
這樣就成功了一半了,剩下的工作只需要導入這個轉好碼的數據了。
將原來的那個表改名,一是為了備份,二是防止導入的時候說表已經存在。
然後還是進入mysql\bin
下面,運行:
Java代碼
mysql
-u
root
-p
mydb
c:\mytable.sql
輸入密碼以後程序開始工作,一段時間以後,新表就出來咯…
求助如何將MYSQL數據庫的編碼轉成UTF8
為了今後wordpress數據庫備份方便,把數據庫默認的latin 1 轉換成了utf8
大致過程如下:
1.備份 數據庫
2.用 EditPlus 打開 備份的數據庫 文件,查找「DEFAULT CHARSET=latin1」 用「DEFAULT CHARSET=utf8」替換.
3.創建一個新的數據庫,用phpadmin進入界面後,
(1).點擊左邊你的數據庫名後,右上方會有「Operations/操作」按鈕,進入後最下面有「Collation:/整理: 」選項,選擇 相應的utf8後按「go/執行」確認【這個步驟是把數據庫默認編碼設置成utf8】
(2).點擊「Home /主目錄」按鈕 ,返回主界面 更改「MySQL connection collation: /collation (校勘)字符集」為utf8_general_ci
如何mysql 5.7的編碼設置成utf8mb4
整理 MySQL 8.0 文檔時發現一個變更:
默認字符集由 latin1 變為 utf8mb4。想起以前整理過字符集轉換文檔,升級到 MySQL 8.0 後大概率會有字符集轉換的需求,在此正好分享一下。
當時的需求背景是:
部分系統使用的字符集是 utf8,但 utf8 最多只能存 3 位元組長度的字符,不能存放 4 位元組的生僻字或者表情符號,因此打算遷移到 utf8mb4。
遷移方案一1. 準備新的數據庫實例,修改以下參數:[mysqld]## Character Settingsinit_connect=’SET NAMES utf8mb4’#連接建立時執行設置的語句,對super權限用戶無效character-set-server = utf8mb4collation-server = utf8mb4_general_ci#設置服務端校驗規則,如果字符串需要區分大小寫,設置為utf8mb4_binskip-character-set-client-handshake#忽略應用連接自己設置的字符編碼,保持與全局設置一致## Innodb Settingsinnodb_file_format = Barracudainnodb_file_format_max = Barracudainnodb_file_per_table = 1innodb_large_prefix = ON#允許索引的最大位元組數為3072(不開啟則最大為767位元組,對於類似varchar(255)字段的索引會有問題,因為255*4大於767)
2. 停止應用,觀察,確認不再有數據寫入
可通過 show master status 觀察 GTID 或者 binlog position,沒有變化則沒有寫入。
3. 導出數據
先導出表結構:mysqldump -u -p –no-data –default-character-set=utf8mb4 –single-transaction –set-gtid-purged=OFF –databases testdb /backup/testdb.sql
後導出數據:mysqldump -u -p –no-create-info –master-data=2 –flush-logs –routines –events –triggers –default-character-set=utf8mb4 –single-transaction –set-gtid-purged=OFF –database testdb /backup/testdata.sql
4. 修改建表語句
修改導出的表結構文件,將表、列定義中的 utf8 改為 utf8mb4
5. 導入數據
先導入表結構:mysql -u -p testdb /backup/testdb.sql
後導入數據:mysql -u -p testdb /backup/testdata.sql
6. 建用戶
查出舊環境的數據庫用戶,在新數據庫中創建
7. 修改新數據庫端口,啟動應用進行測試
關閉舊數據庫,修改新數據庫端口重啟,啟動應用
如何解決MySQL表編碼轉換問題
方法/步驟
將待導出的數據表的表結構導出(可以用Phpmyadmin、mysqldump等,很簡單就不說了),然後將導出的create table語句的CHARSET=latin1改為CHARSET=utf8,在目標庫newdbname中執行該create table語句把表結構建好,接下來開始導出-導入數據。命令:
./mysqldump -d DB_Dig /usr/local/tmp/tables.sql
命令行:進入mysql命令行下,mysql -hlocalhost -uroot -p*** dbname
執行SQL select * from tbname into outfile ‘/usr/local/tbname.sql’;
將tbname.sql轉碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的’轉換-ASCII到UTF-8(Unicode編輯)’,或者將文件另存為UTF-8(無BOM)格式
在mysql命令行下執行語句 set character_set_database=utf8; 註:設置mysql的環境變量,這樣mysql在下一步讀取sql文件時將以utf8的形式去解釋該文件內容
6
在mysql命令行下執行語句 load data infile ‘tbname.sql’ into table newdbname.tbname;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/150529.html