プロシージャの備忘

ブログ全く続かず...
今年はなかなか手に入らないリアルアセットのデータで学会発表なぞもしておりました。
でも1200万件のデータ操作が必要となり、EXCELは当然無理だし、Accessはなんかタルいなぁと。エディタで加工しようにもフリーのものはほとんど動かない...Rのdplyrはサクサク動いてくれるけど、もう少しデータの下ごしらえをしっかりやって、Rには仕上げだけやってもらいたい、とか何とか考えて、データハンドリングのためにMYSQL に手を出してみました。いまさらだけど。

ピンとこないことはたくさんあるが(地頭は残念な感じなので...)、割とすんなり入れた。
でもやはり日付関連の操作は苦戦。中でも月毎にデータを切り出してアウトプットというのをクライアントプログラム使わずプロシージャでガマンしてやってみました。

その備忘です。


DELIMITER //
CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE md date;
DECLARE cur1 CURSOR FOR SELECT DISTINCT DATE_FORMAT(fy, '%Y-%m-01') FROM company order by fy;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

OPEN cur1;

REPEAT
FETCH cur1 INTO md;
IF NOT done THEN
SET @Output := date_format(md,'%Y-%m');
set @q1 := concat("select * from company where fy like '",@output, "%' into outfile ""dump",@Output," .csv"" fields terminated by '\,' enclosed by '\"' lines terminated by '\\r\\n';");
prepare s1 from @q1;
execute s1;deallocate prepare s1;
END IF;
UNTIL done END REPEAT;

CLOSE cur1;
END
//
DELIMITER ;

これだけやるのにどんだけかかるねん。。。