MySQLのすべてのフィールドの長さを更新する方法はありますか?私は試しました:MySQLはすべてのフィールドの長さを変更します
ALTER TABLE mytable MODIFY * VARCHAR(150);
しかし、喜びはありません。助言がありますか?
MySQLのすべてのフィールドの長さを更新する方法はありますか?私は試しました:MySQLはすべてのフィールドの長さを変更します
ALTER TABLE mytable MODIFY * VARCHAR(150);
しかし、喜びはありません。助言がありますか?
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
をして、実際の仕事をするために別のクエリとして/ペースト出力をコピーします。
ありがとう!私は方法がなければならないことを知っていた。これをmysqlコマンドラインに接続すると、クエリが返されました。このクエリをコピー/ペーストして実際にスキーマを変更することができました。 –
各列を特に変更する必要があります。すべての変更は、単一の「パス」で行うことができるので、これはN個の個別ALTER TABLE
コールを実行するよりも効率的である
ALTER TABLE mytable
MODIFY col_1 VARCHAR(150),
MODIFY col_2 VARCHAR(150),
MODIFY col_3 VARCHAR(150);
注意。
私はこれを列単位で行うことができることを認識しています。私はもっと簡潔な(つまり怠惰な)方法を望んでいました。 –
これは、カーソルが理にかなっていることのほんのわずかです。あなたは 'information_schema'をループして' alter'文を実行する必要があります。それが言われている、私がこれについて持っている本当の質問は、なぜですか?確かに整数や他の列を持っているのでしょうか? – Eric
これを行う必要があるのは、データベースの設計が間違っていることや誤解があることを示すことです。なぜこれを行う必要がありますか? – kba
私はCSVファイルから複数のフィールドをインポートしました。 30以上のフィールドのいずれかの保存はすべてvarcharです。私はちょうど彼らがすべてデフォルトに100として長さを調整したいと思います。輸入の長さを指定するために幾分か? –