Ubah semua tabel dalam database dengan satu perintah


13

Apakah ada perintah satu atau satu baris untuk memodifikasi semua tabel dalam database. Saya ingin mengeluarkan perintah ini di setiap tabel dalam database:

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;

Tujuan saya adalah memodifikasi rangkaian karakter dari latin1 ke utf8 ke semua tabel.

UPDATE: RDBMS adalah MySQL

Jawaban:


18

Tidak, tidak ada perintah seperti itu. Tetapi yang dapat Anda lakukan adalah menulis kueri cepat untuk menghasilkan SQL untuk Anda seperti:

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";

Kemudian Anda dapat menjalankan output dari ini untuk melakukan apa yang Anda butuhkan.

Sumber:

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


Tidak, tidak ada cara untuk melakukan apa yang Anda inginkan dalam satu perintah.
Mr.Brownstone

Agar ini berfungsi di bawah MariaDB, untuk beberapa alasan, saya harus meninggalkan WHERE TABLE_SCHEMA = "your_schema_goes_here"perintah.
Gwyneth Llewelyn

2

Cara termudah: ekspor database. Buka basis data yang diekspor dalam editor teks dan lakukan Cari / Ganti dengan "UTF8" atau apa pun. Impor ulang database yang diubah.


1
Mengapa ini cara termudah? Bagaimana jika Anda tidak dapat menurunkan DB untuk mengubah rangkaian karakter?
dezso

Karena itu tidak memerlukan pengetahuan SQL. Jelas, jika Anda tidak dapat mengekspor database: kemudahan dan metode ini tidak akan relevan. Tetapi, jika Anda memiliki hak istimewa yang cukup untuk mengedit database secara langsung, kemungkinan besar Anda juga dapat mengekspornya.
Andrew Smith

Ini adalah solusi terbaik dalam kasus saya! perbaikan cepat yang cukup berguna. Saya sedang bekerja di lokal saya ketika saya mulai memiliki kesalahan "campuran ilegal pemeriksaan" dalam database saya untuk beberapa alasan. +1.
evl183

1

Jika Anda bekerja dengan MS SQL Server, maka ada prosedur tersimpan tanpa dokumen yang dapat Anda gunakan. Gunakan ganti nama tabel dengan? dalam pernyataan itu.

Jadi, dalam contoh Anda

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

Artikel ini berbicara tentang memiliki ms_foreachtable di MYSQL MYSQL CLONE OF SP_MSFOREACHTABLE
Maryam Arshi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.