एक ही आदेश के साथ एक डेटाबेस में सभी तालिकाओं को संशोधित करें


13

क्या डेटाबेस के भीतर सभी तालिकाओं को संशोधित करने के लिए एक एकल या एक पंक्ति कमांड है। मैं डेटाबेस के भीतर हर तालिका में यह आदेश जारी करना चाहता हूं:

ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8;

मेरा उद्देश्य लैटिन 1 से utf8 से सभी तालिकाओं के लिए चारसेट को संशोधित करना है।

अद्यतन: RDBMS MySQL है

जवाबों:


18

नहीं, ऐसी कोई आज्ञा नहीं है। लेकिन आप जो कर सकते हैं, वह आपके लिए एसक्यूएल बनाने के लिए एक त्वरित क्वेरी लिख सकता है:

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


नहीं, एक ही कमांड में आप जो करना चाहते हैं वह करने का कोई तरीका नहीं है।
मिस्टरब्रोनस्टोन

मारियाडीबी के तहत काम करने के लिए इसे प्राप्त करने के लिए, किसी कारण से, मुझे WHERE TABLE_SCHEMA = "your_schema_goes_here"कमांड से बाहर जाना पड़ा ।
ग्वेनेथ लेलेवेलेन 10

2

सबसे आसान तरीका: डेटाबेस निर्यात करें। किसी पाठ संपादक में निर्यात किया गया डेटाबेस खोलें और "UTF8" या जो भी हो, के साथ एक ढूँढें / बदलें। संशोधित डेटाबेस को पुनः आयात करें।


1
यह सबसे आसान तरीका क्यों है? क्या होगा यदि आप चरित्र सेट को संशोधित करने के लिए अपने डीबी को नीचे नहीं ला सकते हैं?
dezso

क्योंकि इसमें SQL ज्ञान की आवश्यकता नहीं है। जाहिर है, अगर आप डेटाबेस निर्यात नहीं कर सकते हैं: आसानी और यह विधि अप्रासंगिक होगी। लेकिन, यदि आपके पास डेटाबेस को सीधे संपादित करने का पर्याप्त विशेषाधिकार है, तो इसकी अत्यधिक संभावना है कि आप इसे निर्यात भी कर सकते हैं।
एंड्रयू स्मिथ

यह मेरे मामले में सबसे अच्छा समाधान था! जल्दी ठीक है कि बहुत काम आया। मैं अपने स्थानीय में काम कर रहा था, जब मुझे किसी कारण से मेरे डेटाबेस में "अवैध रूप से टकरावों का अवैध मिश्रण" होने लगा। +1।
evl183

1

यदि आप MS SQL सर्वर के साथ काम कर रहे हैं, तो एक अवांछित प्रक्रिया संग्रहीत है ms_foreachtable जिसका आप उपयोग कर सकते हैं। तालिका नाम की जगह का उपयोग करें? बयान में।

तो आपके उदाहरण में

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

यह लेख SP_MSFOREACHTABLE के MYSQL MYSQL
मरियम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.