mysql數據庫編碼轉換總結,sql 編碼轉換

本文目錄一覽:

如何對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-hant/n/150529.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-08 14:54
下一篇 2024-11-08 14:54

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 使用SQL實現select 聚合查詢結果前加序號

    select語句是數據庫中最基礎的命令之一,用於從一個或多個表中檢索數據。常見的聚合函數有:count、sum、avg等。有時候我們需要在查詢結果的前面加上序號,可以使用以下兩種方…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • 理解Mybatis中的SQL Limit用法

    Mybatis是一種非常流行的ORM框架,提供了SQL映射配置文件,可以使用類似於傳統SQL語言的方式編寫SQL語句。其中,SQL的Limit語法是一個非常重要的知識點,能夠實現分…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • SQL預研

    SQL預研是指在進行SQL相關操作前,通過數據分析和理解,確定操作的方法和步驟,從而避免不必要的錯誤和問題。以下從多個角度進行詳細闡述。 一、數據分析 數據分析是SQL預研的第一步…

    編程 2025-04-28

發表回復

登錄後才能評論