단일 명령으로 데이터베이스의 모든 테이블 수정


13

데이터베이스 내의 모든 테이블을 수정하는 단일 또는 한 줄 명령이 있습니까? 데이터베이스의 모든 테이블에서이 명령을 실행하고 싶습니다.

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;

내 목표는 문자 집합을 latin1에서 utf8로 모든 테이블로 수정하는 것입니다.

업데이트 : RDBMS는 MySQL입니다

답변:


18

아니요, 그러한 명령은 없습니다. 그러나 당신이 할 수있는 일은 다음과 같이 SQL을 생성하는 빠른 쿼리를 작성하는 것입니다.

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

그런 다음 출력을 실행하여 필요한 것을 수행 할 수 있습니다.

출처 :

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


단일 명령으로 원하는 작업을 수행 할 수있는 방법이 없습니다.
Mr.Brownstone

이것이 MariaDB에서 작동하게하려면 어떤 이유로 든 WHERE TABLE_SCHEMA = "your_schema_goes_here"명령 을 떠나야했습니다 .
Gwyneth Llewelyn 10

2

가장 쉬운 방법 : 데이터베이스를 내 보냅니다. 텍스트 편집기에서 내 보낸 데이터베이스를 열고 "UTF8"등으로 찾기 / 바꾸기를 수행하십시오. 수정 된 데이터베이스를 다시 가져옵니다.


1
이것이 가장 쉬운 방법은 무엇입니까? 문자 집합을 수정하기 위해 DB를 종료 할 수 없으면 어떻게됩니까?
dezso

SQL 지식이 필요하지 않기 때문입니다. 분명히, 데이터베이스를 내보낼 수없는 경우 : 쉬움과이 방법은 관련이 없습니다. 그러나 데이터베이스를 직접 편집 할 수있는 충분한 권한이 있으면 데이터베이스를 내보낼 수도 있습니다.
앤드류 스미스

이것은 내 경우에 가장 좋은 솔루션이었습니다! 매우 편리한 빠른 수정. 어떤 이유로 데이터베이스에서 "정확한 조합의 데이터 정렬"오류가 발생하기 시작했을 때 로컬에서 작업하고있었습니다. +1.
evl183

1

MS SQL Server를 사용하는 경우 사용할 수있는 문서화되지 않은 저장 프로 시저 ms_foreachtable이 있습니다. 테이블 이름을? 성명서에서.

예를 들어

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

MYSQL에서 ms_foreachtable을 가진 약이 문서 회담 SP_MSFOREACHTABLE의 MYSQL CLONE
마리암 Arshi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.