sql >> Database >  >> RDS >> Mysql

bulksgewijs wijzigen van kolomtypes in MySQL

Oplossing zonder opgeslagen procedures (met alleen phpMyAdmin of een andere DBA-tool).

Voer de volgende query uit

SELECT 
    CONCAT('ALTER TABLE ',
            TABLE_NAME,
            ' CHANGE COLUMN ',
            COLUMN_NAME,
            ' ',
            column_name,
            ' TARGET_TYPE ',
            CASE
                WHEN IS_NULLABLE = 'NO' THEN ' NOT '
                ELSE ''
            END,
            ' NULL;') AS que
FROM
    information_schema.columns
WHERE
    table_schema = 'MY DB'
        AND data_type = 'SOURCE_TYPE';

Met deze query krijgt u alle instructies om te vuren. U kunt ze uitvoeren of opslaan in een SQL Upgrade-script

Voorbeeld (van tinyint naar bit):

ALTER TABLE mytable CHANGE COLUMN redacted redacted BIT  NULL;
ALTER TABLE mytable CHANGE COLUMN redacted2 redacted2 BIT NOT NULL;


  1. Query met meerdere waarden in een kolom

  2. Aanbevelingen voor ondersteuning van zowel Oracle als SQL Server in dezelfde ASP.NET-app met NHibernate

  3. PostgreSQL hstore/json gebruiken met JdbcTemplate

  4. MySQL Meerdere joins in één query?