備忘録的にメモ。
MySQL の TEXT 型は 65,535 バイトまでしか入れられない。
これ以上の容量が欲しい場合は MEDIUMTEXT(16,777,216 バイト), LONGTEXT(4,294,967,296 バイト) を検討。
※MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.5 データタイプが必要とする記憶容量
2011年12月2日金曜日
2010年8月13日金曜日
[MySQL] コマンドラインプロンプトを変更する
MySQL のコマンドラインプロンプトは mysql> がデフォルトですが、実は変更・カスタマイズすることができます。
通常
ユーザ、ホスト、データベース名を表示してみる
毎回コマンドオプションを指定するのが面倒な場合は、$HOME/.my.cnf を下記のようにすればOKです。
※オプションファイル上では、プロンプトオプションとエスケープシーケンスに重複があるようなので、\ は \\ としてエスケープするのが良いです。
使用できるオプションは次の通り。
詳しくは MySQL のドキュメントを。
http://dev.mysql.com/doc/refman/5.1/ja/mysql-commands.html
通常
$ mysql -h host database mysql>
ユーザ、ホスト、データベース名を表示してみる
$ mysql -h host database --prompt="(\u@\h) [\d]> " (user@host) [database]>
毎回コマンドオプションを指定するのが面倒な場合は、$HOME/.my.cnf を下記のようにすればOKです。
※オプションファイル上では、プロンプトオプションとエスケープシーケンスに重複があるようなので、\ は \\ としてエスケープするのが良いです。
[mysql] prompt=(\\u@\\h) [\\d]>\\_
使用できるオプションは次の通り。
オプション | 説明 |
---|---|
\v | サーババージョン |
\d | デフォルトデータベース |
\h | サーバホスト |
\p | 現TCP/IPポートかソケットファイル |
\u | ユーザネーム |
\U | フルのuser_name@host_nameアカウント名 |
\\ | リテラル‘\’バックスラッシュキャラクタ |
\n | ニューラインキャラクタ |
\t | タブキャラクタ |
\ | スペース(バックスラッシュの後のスペース) |
\_ | スペース |
\R | 現時刻、軍隊表記(0-23) |
\r | 現時刻、標準表記(1-12) |
\m | 現時刻の分 |
\y | 現年、2桁 |
\Y | 現年、4桁 |
\D | 日付(フルで) |
\s | 現時刻の秒 |
\w | 曜日名を頭3文字で(Mon, Tue, …) |
\P | am/pm |
\o | 月名を数字で |
\O | 月明を頭3文字で(Jan, Feb, …) |
\c | 発行されたステートメントごとに増加するカウンター |
\l | 現デリミタ(5.1.12で新規追加) |
\S | セミコロン |
\' | シングルクオート |
\" | ダブルクオート |
詳しくは MySQL のドキュメントを。
http://dev.mysql.com/doc/refman/5.1/ja/mysql-commands.html
2010年5月13日木曜日
[MySQL] MySQL4.1前後でのtimestampのフォーマット
あまり古いバージョンの MySQL を扱う機会は少ないと思いますが、知らないとバグになりやすい仕様があります。
なんと、MySQL の timestamp 型が返す文字列は、バージョン 4.1 の前後で異なっています。
4.1 以前のバージョンでは、YYYYMMDDHHMMSS のフォーマットで返りますが、
4.1 以降のバージョンでは、YYYY-MM-DD HH:MM:SS のフォーマットで返ります。
詳細は下記ドキュメントをご覧ください。
http://dev.mysql.com/doc/refman/4.1/ja/datetime.html
開発環境や本番環境で MySQL のバージョンが違うケースなどで地味にハマりますのでご注意を…
なんと、MySQL の timestamp 型が返す文字列は、バージョン 4.1 の前後で異なっています。
4.1 以前のバージョンでは、YYYYMMDDHHMMSS のフォーマットで返りますが、
4.1 以降のバージョンでは、YYYY-MM-DD HH:MM:SS のフォーマットで返ります。
詳細は下記ドキュメントをご覧ください。
http://dev.mysql.com/doc/refman/4.1/ja/datetime.html
注意: バージョン 4.1 以降、TIMESTAMP は 'YYYY-MM-DD HH:MM:SS' 形式の文字列として返されます。その他のタイムスタンプ長のサポートは中止されました。
開発環境や本番環境で MySQL のバージョンが違うケースなどで地味にハマりますのでご注意を…
2009年12月12日土曜日
[MySQL] timestamp型から日別に集計する
SQLで集計を行う際に、日別に集計を取りたいときがあります。
でも持っている日付データは timestamp のみ。
この時、timestamp に対して GROUP BY を行うと、
日付のみならず時刻までもグルーピングしてしまって、
秒単位の集計になってしまい、使い物になりません。
そこで、SUBSTRING を使って頭 10 文字だけを GROUP BY することで、
日別に集計することができます。
先頭から 10 文字を見れば、'YYYY-MM-DD' になるという寸法ですね。
でも持っている日付データは timestamp のみ。
この時、timestamp に対して GROUP BY を行うと、
日付のみならず時刻までもグルーピングしてしまって、
秒単位の集計になってしまい、使い物になりません。
そこで、SUBSTRING を使って頭 10 文字だけを GROUP BY することで、
日別に集計することができます。
SELECT SUBSTRING(timestamp,1,10) AS date, COUNT(*) FROM table GROUP BY date;timestamp が 'YYYY-MM-DD HH:MM:SS' のフォーマットなので、
先頭から 10 文字を見れば、'YYYY-MM-DD' になるという寸法ですね。
2009年10月15日木曜日
[MySQL] mysqldump の INSERT 文を複数行にする
mysqldump のオプション --skip-extended-insert を使う。
dump データの diff をとる時とかに便利。
[参考] http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html
dump データの diff をとる時とかに便利。
[参考] http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html
登録:
投稿 (Atom)