鶏口牛後な日々

心の赴くまま、やりたいことを仕事に。

MySQL関連_備忘録

CSVをインポートする時

LOAD DATA LOCAL INFILEを使う。

この際、デフォルトでは設定ができていないので、エラーが出る。

クライアントもサーバー側も、ローカルインポートOKの設定にする必要がある。

SHOW GLOBAL VARIABLES LIKE 'local_infile';
SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';

でサーバ側はOK。

クライアント側は、一度quitしてから、

mysql --local-infile=1 -u <user> -p

で入り直すと LOAD DATA LOCAL INFILE ができるようになる。

実際の文は以下のような感じ;

LOAD DATA LOCAL INFILE "<csv_file_path>" 
INTO TABLE <table_name> 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
IGNORE 1 LINES 
(@1, @2, @3, @4, @5) 
SET column_name1=@1, column_name2=@2, column_name3=@3, column_name4=@4, column_name5=@5;

これで、タイトル行を無視して、テーブルのカラムを指定して入れ込むことができた。 上記の例は、区切り文字は、カンマで、ダブルクオーテーションで囲まれている場合があると言う時のもの

結果をlessで見たい

pager less -S

これでless表示してくれる

解除は、 nopager

横長の結果を縦で見たい

<セレクト文>¥G

最後にバックスラッシュとGを入れると縦表示してくれる。