2012-01-09 9 views
0

MySQLのすべてのフィールドの長さを更新する方法はありますか?私は試しました:MySQLはすべてのフィールドの長さを変更します

ALTER TABLE mytable MODIFY * VARCHAR(150); 

しかし、喜びはありません。助言がありますか?

+0

これは、カーソルが理にかなっていることのほんのわずかです。あなたは 'information_schema'をループして' alter'文を実行する必要があります。それが言われている、私がこれについて持っている本当の質問は、なぜですか?確かに整数や他の列を持っているのでしょうか? – Eric

+0

これを行う必要があるのは、データベースの設計が間違っていることや誤解があることを示すことです。なぜこれを行う必要がありますか? – kba

+0

私はCSVファイルから複数のフィールドをインポートしました。 30以上のフィールドのいずれかの保存はすべてvarcharです。私はちょうど彼らがすべてデフォルトに100として長さを調整したいと思います。輸入の長さを指定するために幾分か? –

答えて

3

information_schemaデータベースの情報を使用してクエリを生成できます。

あなたがあなたのテーブルmyTable使用クエリでvarchar型へのすべてのvarchar(100)の列​​(150)を変更する必要がある場合:

SELECT CONCAT('ALTER TABLE `myTable`', 
       GROUP_CONCAT( 
        CONCAT('\nMODIFY ', COLUMN_NAME, ' VARCHAR(150) '), 
       '') 
      ) AS query 
FROM information_schema.COLUMNS 
WHERE DATA_TYPE = 'varchar' 
AND CHARACTER_MAXIMUM_LENGTH = 100 
AND TABLE_SCHEMA = 'myDatabase' 
GROUP BY TABLE_NAME 

をして、実際の仕事をするために別のクエリとして/ペースト出力をコピーします。

+0

ありがとう!私は方法がなければならないことを知っていた。これをmysqlコマンドラインに接続すると、クエリが返されました。このクエリをコピー/ペーストして実際にスキーマを変更することができました。 –

0

各列を特に変更する必要があります。すべての変更は、単一の「パス」で行うことができるので、これはN個の個別ALTER TABLEコールを実行するよりも効率的である

ALTER TABLE mytable 
MODIFY col_1 VARCHAR(150), 
MODIFY col_2 VARCHAR(150), 
MODIFY col_3 VARCHAR(150); 

注意。

+0

私はこれを列単位で行うことができることを認識しています。私はもっと簡潔な(つまり怠惰な)方法を望んでいました。 –

関連する問題