phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Changer le type de données d'une colonne dans toute la base de données - MySQL

Si vous ne pouvez pas écrire un script pour faire le travail, écrivez un script qui écrit un script pour faire le travail !

Vous voulez un tas d'instructions ALTER TABLE :

SET SESSION group_concat_max_len = 1000000; -- Bumps the limit of 1028
SELECT GROUP_CONCAT(
    CONCAT(
        'ALTER TABLE `',
        table_name,
        '` MODIFY COLUMN `',
        column_name,
        '` VARCHAR(',
        character_maximum_length,
        ')'
    )
SEPARATOR ';\n') your_alter_statements
FROM information_schema.columns
WHERE table_schema = 'concrete'
AND data_type = 'char';

Cela se traduira par :

ALTER TABLE `table1` MODIFY COLUMN `col1` VARCHAR(10);
ALTER TABLE `table1` MODIFY COLUMN `col2` VARCHAR(10);
ALTER TABLE `table2` MODIFY COLUMN `col1` VARCHAR(10);
ALTER TABLE `table3` MODIFY COLUMN `col1` VARCHAR(10);
ALTER TABLE `table3` MODIFY COLUMN `col2` VARCHAR(10);

Exécutez-le et vous pourrez rentrer chez vous plus tôt !

MISE À JOUR :Arrêt de la troncature en ajoutant group_concat_max_len . Rendre la longueur dynamique en fonction de la longueur des colonnes.