ホーム > MySQL

MySQLのアーカイブ

TerminalでMySQLに日本語データを読み込む

  • 投稿者: admin
  • 2009年1月11日 12:02 PM
  • MySQL

Mac OSX Leopard 10.5.3
mysql5 @5.0.51a_0+server

TerminalからMySQLのデータベーステーブルに日本語のデータを入力しようとしたら、確定するとはじかれて「???」とかになってしまう。bashのプロンプトでは大丈夫だから(確定してもちゃんと表示されているし、既存の2byte文字のファイル名、フォルダ名も表示できている)MySQLの問題なんだろうか。

問題解決は出来なかったけど、かわりにテキストファイルで用意した外部ファイルを読み込んでテーブル内にデータを読み込むというやり方を知ったので、一応メモしておく。

入力したい各レコードをテキストファイルで作成して拡張子を.csvにして保存。
この場合は文字列でもクォーテーションで囲わなくてよい。

1,北海道,札幌市,83451,567
2,青森県,青森市,9606,151

/Users/Shared(Macintosh HD/ユーザ/共有)におく。
もちろん、別にここじゃなくてもいいんだけど。

データベースを作成して、テーブルも作成しておく。以下のようにカラム構造やデータ型を定義して。

mysql> create table tb1(bang varchar(10), nama varchar(10), tosi int);

データベースをuseで宣言してから、その中のデータを読み込みたいテーブルを以下のように指定してloadする。(この場合tb1というテーブル)

mysql> load data infile "/Users/Shared/data.csv"
    -> into table tb1 fields terminated by ",";

MySQLにおけるデータ型

  • 投稿者: admin
  • 2009年1月10日 5:16 PM
  • MySQL

数値型

データ型 バイト数 値の範囲 内容
TINYINT 1 -128から127まで。符号なしなら、0から255まで。 整数型
SMALLINT 2 -32,768から32,767まで。符号なしなら0から65,535まで。 整数型
MEDIUMINT 3 -8,388,608から、8,388,607まで。符号なしなら、0から4,294,967,295まで。 整数型
INT 4 とてもたくさん 整数型(別名INTEGER型)
BIGINT 8 とてもとてもたくさん 整数型で最大のデータ型
FLOAT 4 4バイトの値での浮動小数点 浮動小数点でのデータ型
DOUBLE 8 8バイトの値での浮動小数点 浮動小数点での最大データ型

文字列型

データ型 最大バイト(文字)数 内容
CHAR 255 固定長のテキスト。長さに足りない分はスペースが格納される。
VARCHAR 255 可変長のテキスト。
TINYTEXT 255 可変長の短いテキスト。
TINIYBLOB 255 可変長の短いバイナリテキスト。(文字数ではなくバイト数でカウント)
TEXT 65535 可変長の長いテキスト。
BLOB 65535 可変長の長いバイナリテキスト。(文字数ではなくバイト数でカウント)
MEDIUMTEXT 16777215 可変長で、通常と最長の間のテキスト。
MEDIUMBLOB 16777215 可変長で、通常と最長の間のバイナリテキスト。
LONGTEXT 4294967295 可変長で最長のテキスト。
LONGBLOB 4294967295 可変長で最長のバイナリテキスト。

日付型

データ型 格納バイト数 内容
DATE 3 YYYY-MM-DD形式で格納される(2009-01-01)
DATETIME 8 YYYY-MM-DD HH:MM:SS形式で格納される(2009-01-01 00:00:00)
TIME 3 HH:MM:SS形式で格納される(00:00:00)
TIMESTAMP 4 YYYYMMDDHHMMSS形式で格納される(20090101000000)*UNIXでよく使われるタイムスタンプ型

MySQLの文字コード設定

MacPortsで環境を構築してMySQLを利用する際に、そのデフォルトの文字コードを設定する際のメモ。(これで毎回データベースを作る際に文字コードを指定しなくて済むようになる)

MacPortsでインストールしたMySQL5において。

/opt/local/etc/mysql5/
にあるmy.cnfに、以下の内容を追加する。(すでにあるものには追加記述、ない項目は項目名と一緒に)

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

[mysql.server]
user=mysql
default-character-set=utf8

[mysqld_safe]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

設定ファイルを編集したので、MySQLを再起動させる。
自分の環境ではMySQLは自動起動の設定にしているので、以下のコマンドで。

$ sudo launchctl stop org.macports.mysql5 停止させて
$ sudo launchctl start org.macports.mysql5 起動させる

確認してみる。

mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+-----------------------------------------+
| Variable_name            | Value                                   |
+--------------------------+-----------------------------------------+
| character_set_client     | utf8                                    |
| character_set_connection | utf8                                    |
| character_set_database   | utf8                                    |
| character_set_filesystem | binary                                  |
| character_set_results    | utf8                                    |
| character_set_server     | utf8                                    |
| character_set_system     | utf8                                    |
| character_sets_dir       | /opt/local/share/mysql5/mysql/charsets/ |
+--------------------------+-----------------------------------------+
8 rows in set (0.00 sec)

character_set_filesystem以外はすべてutf8になっている。OK。
(character_set_filesystemはファイルシステムのための文字コードなのでbinaryのままでよいらしい)

MySQLとApacheの再起動

MacPortsでインストールした MySQL5 と Apache2 はどっちも自動起動に設定してあるので、設定ファイルを編集した際にそれを反映させるにはどちらも Terminal からコマンドで再起動が必要。すぐ忘れるのでこれもメモ。

MySQL5

$ sudo /opt/local/share/mysql5/mysql/mysql.server start
$ sudo /opt/local/share/mysql5/mysql/mysql.server restart
$ sudo /opt/local/share/mysql5/mysql/mysql.server stop

Apache2

$ sudo /opt/local/apache2/bin/apachectl stop
$ sudo /opt/local/apache2/bin/apachectl start

ついでに、Ubuntu Server にインストールした MySQL についてもメモ。

$ sudo /etc/init.d/mysql start
$ sudo /etc/init.d/mysql restart
$ sudo /etc/init.d/mysql stop

上から順に、開始、再起動、停止。

途中から勘違いをしていて、$ mysql -u root -p とかで「再起動」になっていると思いこんでいた。
これは単に mysql monitor を起動しているだけで、MySQL Server の再起動じゃないんだな。きっと。
まだこのへんが初心者で超曖昧な自分の理解。

MacPortsによるApache2+MySQL5+PHP5の環境構築まとめ

MacPortsでインストールしたPHP5とMySQL5を接続する

MacPortsでApache2、MySQL5、PHP5をインストールし、このMySQLとPHPを連動させられるように接続するための設定をする。

インストール済みのPHPの設定ファイル「php.ini」内にmysqlソケットの記述を追加

/opt/local/etc/mysql5/my.cnfの中の[client]部分にある
socket=/opt/local/var/run/mysql5/mysqld.sock に合わせて

/opt/local/etc/php.iniの中の mysql.default_socket 部分を
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
と記述する。

MySQLの設定を変更したのでMySQLを再起動

$ sudo launchctl stop org.macports.mysql5
$ sudo launchctl start org.macports.mysql5
$ sudo /opt/local/apache2/bin/apachectl stop
$ sudo /opt/local/apache2/bin/apachectl start

MacportsでMySQLをインストール

mysql5にvariantsをつけてインストール

このvariantsをつけておくとMySQLサーバの自動起動のためのscriptsも一緒にインストールできるので便利。

$ sudo port install mysql5 +server

mysqlを初期化

$ sudo -u mysql mysql_install_db5

MySQLの起動確認

$ sudo /opt/local/share/mysql5/mysql/mysql.server start
Starting MySQL
.. SUCCESS!

MySQLの接続

$ mysql5 -u root -p(初期状態ではパスワードは設定していないのでそのままリターンでOK)

MySQLのroot権限にパスワードを設定する(MySQLに接続した状態で以下のコマンドで設定)

mysql> set password for root@localhost=password('password');

my.cnf(設定ファイル)を作成する
/opt/local/share/mysql5/mysql/に入った「my-small.cnf」を
/opt/local/etc/mysql5/my.cnfとしてコピー。

$ sudo cp /opt/local/share/mysql5/mysql/my-small.cnf
/opt/local/etc/mysql5/my.cnf

上記作業でコピーしたファイルをvim(などのテキストエディタ)で開いてから以下の内容を該当部分に追記(ないものは項目ごとペーストで)

$ sudo vim /opt/local/etc/mysql5/my.cnf

my.cnf に追記する内容

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

[mysql.server]
user=mysql
default-character-set=utf8

[mysqld_safe]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

設定ファイル(my.cnf)の編集内容を有効にするためにMySQLを再起動(停めて、また起動)

$ sudo launchctl stop org.macports.mysql5
$ sudo launchctl start org.macports.mysql5

mysqlに繋いでmysql> status;で文字コードの設定が有効になっているか確認。

起動時にMySQLサーバが自動で起動するように設定

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

MySQLドライバをインストール

$ sudo port install rb-dbi +dbd_mysql

Ubuntuにmysql-serverを入れ直す

この記事は
Ubuntuにmysql-serverを入れ直す
に引っ越しました。

Ubuntu 8.04にMySQL serverをインストールする

ずいぶん古い記事だったけど、とりあえずそれを参考に MySQL をインストールしてみようと思った。
続きを読む

MySQL, apache, phpの設定ファイル

よく忘れて探す時間がもったいないのでメモ。

MacPortsでインストールしているMySQL、Apache2、PHP5の設定ファイルは以下の場所にある。
(MacPortsで/opt以下にインストールしている場合)

MySQL5
/opt/local/etc/mysql5/my.cnf

Apache2
/opt/local/apache2/conf/httpd.conf

PHP5
/opt/local/etc/php.ini

ホーム > MySQL

検索
フィード

ページの上部に戻る