Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để thay đổi đối chiếu của tất cả các hàng từ latin1_swedish_ci thành utf8_unicode_ci?

Nếu các cột đang sử dụng bộ ký tự bảng mặc định thì chỉ cần một truy vấn cho mỗi bảng để chuyển đổi:

ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Nếu bộ ký tự được đặt riêng lẻ trên mỗi cột, AFAIK không có cách nào để thực hiện điều đó trên tất cả các cột của tất cả các bảng trong cơ sở dữ liệu trực tiếp trong MySql, nhưng bạn có thể viết một chương trình nhỏ bằng ngôn ngữ bạn chọn để làm như vậy.

Chương trình của bạn sẽ truy vấn INFORMATION_SCHEMA.COLUMNS bảng và nhìn vào CHARACTER_SET_NAME cột:

SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'

Đối với mỗi hàng kết quả, việc tổng hợp và thực thi một ALTER TABLE trở nên vô cùng đơn giản truy vấn ngay tại chỗ để thay đổi bộ ký tự và đối chiếu một cách thích hợp:

ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Trong truy vấn trên t , col TEXT sẽ là các giá trị của TABLE_NAME , COLUMN_NAME DATA_TYPE các cột từ INFORMATION_SCHEMA.COLUMNS tập hợp kết quả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng LOAD DATA LOCAL INFILE trong Java

  2. Mã hóa mật khẩu và tạo muối Crypt (), được thực thi tốt?

  3. kết nối java với mysql bằng jdbc trên osx

  4. node-mysql nhiều câu lệnh trong một truy vấn

  5. tính tổng thời gian kiểu sử dụng sql