MySQLにCSVからのデータを挿入する方法
参考サイト
http://tomo.ac/goodstream/database/mysql/linux/tips.htm#データをCSV(Excel)で入出力する方法
http://antas.jp/blog/kinokuni/2006/10/mysql41load_data.html
実際のコード
mysql> set character set sjis;
mysql> load data (local) infile "/tmp/dump.csv" into table tablename
fields terminated by ',' enclosed by '"'
lines terminated by '\r\n';
注意点
※encloses by '"'は、データが" "で囲まれているときの指定。
※最後の改行コードの指定がないと、エラーになってしまう
※上記の文を実行したとき、データベースのキャラクターセットが作ったファイルと異なると、エラー
対処法)
alter database データベース名 character set cp932;
として、変更すれば、普通に代入できる。
一応、テーブルの文字セットが同じこともチェック
チェックは、
show create database データベース名\G show create table テーブル名\G
でチェックできる。
エクスプローラからDB関連のファイル(frmやopt)をコピーした場合の挙動
・結論を先に言うと、対応するDB関連ファイルをコピーしても、
DBをバックアップしたことにはならないのではないだろうか?
(引き続き・要・調査)
・エクスプローラからデータをコピーすると、
show databasesや、show tables;を使ったときに
コピーしたDB名やテーブル名が表示される。
しかし、アクセスすると「存在しない」というエラーが出る
・単純に.frmをコピーしたものには「存在しない」エラー
・データベースのフォルダ名を変えると、「存在しない」エラー
・逆にコピーしたものでも、テータベース名とテーブル名が
双方、元のものと同一であれば、アクセスすることが可能になる。
→ibdata1と照合しているためと思われる。(InnoDBの場合)
(ibdata1:テーブルデータやインデックスの保存)