Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

किसी तालिका में सभी स्तंभों को 'शून्य नहीं' में संशोधित करें, चाहे जो भी हो

एक त्वरित तरीका यह है कि आप अपने परिवर्तन विवरण को एक फ़ाइल में लिख लें

select
concat('ALTER TABLE ', c.TABLE_NAME, ' CHANGE ', c.COLUMN_NAME, ' ', c.COLUMN_NAME, ' ', c.COLUMN_TYPE, ' NOT NULL;') as alter_statement
into outfile '/tmp/alter.txt'
from information_schema.COLUMNS c
where 
c.IS_NULLABLE = 'YES'
and c.TABLE_SCHEMA = 'your_database_name';

फिर फ़ाइल की सामग्री को निष्पादित करें

source /tmp/alter.txt

और आपका काम हो गया...

एक खेल के मैदान डीबी में इसका परीक्षण किया और यह मेरे लिए काम किया, फिर भी आप निष्पादित करने से पहले फ़ाइल को दोबारा जांचना चाहेंगे :)

पीएस .:मैंने जांच नहीं की है कि कैसे NULL मानों को संभाला जाता है। आईआईआरसी आपके पास डिफ़ॉल्ट मान होना चाहिए? अभी यकीन नहीं हो रहा। कृपया इसका उपयोग करने से पहले इसका परीक्षण करें।

संपादित करें 1:प्रति टेबल एक स्टेटमेंट रखने के लिए:

select
concat('ALTER TABLE ', c.TABLE_NAME, GROUP_CONCAT(' MODIFY COLUMN ', c.COLUMN_NAME, ' ', c.COLUMN_TYPE, ' NOT NULL')) as alter_statement
from information_schema.COLUMNS c
where 
c.IS_NULLABLE = 'YES'
and c.TABLE_SCHEMA = 'your_database_name'
group by c.TABLE_NAME

संपादित करें 2:

यह काम करता है

select concat(alter_statement, ';')
into outfile '/tmp/alter.txt'
from (
select
concat('ALTER TABLE ', c.TABLE_NAME, GROUP_CONCAT(' CHANGE ', c.COLUMN_NAME, ' ', c.COLUMN_NAME, ' ', c.COLUMN_TYPE, ' NOT NULL')) as alter_statement

from information_schema.COLUMNS c
where 
c.IS_NULLABLE = 'YES'
and c.TABLE_SCHEMA = 'playground'
group by c.TABLE_NAME
) sq

, लेकिन group_concat() लंबाई में सीमित है, इसलिए यदि आपके पास तालिका में बहुत अधिक कॉलम हैं तो आपको सिंटैक्स त्रुटियां मिल सकती हैं। फिर भी आपके पास ऊपर से पहला विकल्प है, या आप यह मैन्युअल प्रविष्टि :

SET [GLOBAL | SESSION] group_concat_max_len = val;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Connector.php लाइन 55 में Laravel PDOException त्रुटि

  2. Android MySQL डेटाबेस से ठीक से कनेक्ट करने में विफल रहा है

  3. पार्स त्रुटि:सिंटैक्स त्रुटि, अनपेक्षित (T_VARIABLE)

  4. सभी पंक्तियों के एक कॉलम का मान सेट करना बहुत धीमा है

  5. मैं WAMP सर्वर पर MySQL से कैसे जुड़ सकता हूं?