Bir veritabanındaki tüm tabloları tek bir komutla değiştirme


13

Bir veritabanı içindeki tüm tabloları değiştirmek için tek veya bir satır komutu var mı. Bir veritabanı içindeki her tabloda bu komutu vermek istiyorum:

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;

Amacım latin1'den utf8'e karakter kümesini tüm tablolara değiştirmek.

GÜNCELLEME: RDBMS MySQL'dir

Yanıtlar:


18

Hayır, böyle bir komut yok. Ancak yapabileceğiniz şey SQL'i sizin için oluşturmak için hızlı bir sorgu yazmaktır:

USE INFORMATION_SCHEMA;
SELECT 
CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` CONVERT TO CHARACTER SET UTF8;") 
AS MySQLCMD FROM TABLES 
WHERE TABLE_SCHEMA = "your_schema_goes_here";

Daha sonra ihtiyacınız olanı yapmak için çıktıyı çalıştırabilirsiniz.

Kaynaklar:

http://forums.mysql.com/read.php?20,244395,244421#msg-244421


Hayır, tek bir komutla istediğinizi yapmanın bir yolu yoktur.
Mr.Brownstone

Bunun MariaDB altında çalışmasını sağlamak için, bir nedenden dolayı, WHERE TABLE_SCHEMA = "your_schema_goes_here"komutun dışına çıkmak zorunda kaldım .
Gwyneth Llewelyn

2

En kolay yol: Veritabanını dışa aktarın. Dışa aktarılan veritabanını bir metin düzenleyicisinde açın ve "UTF8" veya başka bir yöntemle Bul / Değiştir işlemi gerçekleştirin. Değiştirilmiş veritabanını yeniden içe aktarın.


1
Neden bu en kolay yol? Karakter setini değiştirmek için DB'nizi indiremezseniz ne olur?
dezso

Çünkü hiçbir SQL bilgisi gerektirmez. Açıkçası, veritabanını dışa aktaramazsanız: kolaylığı ve bu yöntem ilgisiz olacaktır. Ancak, veritabanını doğrudan düzenlemek için yeterli ayrıcalığınız varsa, büyük olasılıkla da dışa aktarabilirsiniz.
Andrew Smith

Bu benim durumumda en iyi çözümdü! hızlı düzeltme oldukça kullanışlı geldi. Nedense benim veritabanı "yasadışı harmanlama karışımı" hatası almaya başladığımda yerel çalışıyordu. +1.
evl183

1

MS SQL Server ile çalışıyorsanız, kullanabileceğiniz belgesiz bir saklı yordam ms_foreachtable vardır. Tablo adını bir? ifadesinde.

Yani örneğinizde

EXEC ms_foreachtable 'ALTER TABLE [?] .....'

Bu makale, SP_MSFOREACHTABLE MYSQL MYSQL CLONE
Maryam Arshi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.