FrontPage  Index  Search  Changes  Login

MySQL

コマンド

  • スキーマ表示
desc table_name

文字コード設定

/etc/my.conf を編集(なければ新規作成)し下記を記述

[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

再起動して

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       | /usr/local/mysql-5.1.38-osx10.5-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+

ファイルのインポート

  • mysql にログインしてからのコマンド実行で import
mysql> load data local infile "filepath" into table users fields terminated by ',';
  • mysqlimport コマンドで import
$ mysqlimport -u root -ppass -d  --fields-terminated-by=, --local tusers users.csv

参考 http://dev.mysql.com/doc/refman/4.1/ja/mysqlimport.html

shell> mysqlimport [options] database textfile1 [textfile2 ...]
  • -d, --delete テキストファイルをインポートする前にテーブルを空にする。
  • -L, --local クライアントから入力ファイルを読み取る。デフォルトでは、localhost(デフォルトホスト)に接続した場合、テキストファイルはサーバにあると想定される。

ファイル出力

  • csv 出力
SELECT * FROM テーブル名 INTO OUTFILE "ファイル名" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '囲み文字の指定';
  • Ruby で Sequel を使った場合
require 'sequel'
DB = Sequel.connect('mysql://root:pass@127.0.0.1/tusers')
sql = %Q! select * from users into outfile '/tmp/mout.csv' fields terminated by ',' ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '\n' !
DB.execute(sql)

性能比較

MySQL VS sqlite3

Sequel を使って find_all をした場合

  • MySQL : 15 [s]
  • sqlite : 60 [s]

スキーマ

unless DB.table_exists? :users
  DB.create_table :users do
      primary_key :id
      String :screen_name
      String :uid ,:unique => true
      String :name
      varchar :description , :length => 500
      varchar :profile_image_url , :length => 500
      varchar :url , :length => 500
      integer :utc_offset
      String :time_zone
      String :location
      integer :followers_count
      integer :friends_count
      integer :statuses_count
  end
  DB.add_index :users, :screen_name
  DB.add_index :users, :uid
end





Last modified:2010/02/02 21:16:56
Keyword(s):
References:[FrontPage]