読者です 読者をやめる 読者になる 読者になる

CSV形式のファイルをDBに突っ込む

研究(SBM) mysql ubuntu

データベースの生成

create database LDclip;

テーブルの生成

create table clips (
  user_id int not null,
  url varchar(255) not null,
  timestamp timestamp not null default CURRENT_TIMESTAMP,
  tags text,
);

CSVファイルの読み込み

セキュリティ上の理由から、サーバに存在するテキストファイルを読み取るときには、そのファイルがデータベースディレクトリに存在するか、または全ユーザがそのファイルを読み取り可能でなければなりません。

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.4.8 LOAD DATA INFILE 構文より引用

ということなので,CSVファイルをデータベースディレクトリに移動

$ sudo mv CSVファイル名 /var/lib/mysql/LDclip/

読み込み

load data infile 'CSVファイル名' ignore
   into table clips
   character set utf8
   fields terminated by ',' enclosed by '"'
   (user_id, url, @var1, tags)
   set timestamp = str_to_date(@var1, "%Y-%m-%d %T")

というわけで

自力でCSVをパースしようと試みたり,OpenCSVライブラリの存在を知って使ってみたり,250万レコードのブックマークデータをファイルから読み込んで使おうとしてメモリが足らなくなったりしたわけだが,DBを使えばいーじゃんってことになったわけです.