JDBCを使ってMySQLを使っていますが、MySQL 8.0 でいくつかつまづいたのでメモです。
1.JDBCドライバのクラス名が変更されている
com.mysql.cj.jdbc.Driver 以前はcom.mysql.jdbc.Driver
2.JDBCパラメータが追加が必要です。(次の記載は私がよく使うものです)
プロパティ | 値 | 説明 |
allowLoadLocalInfile | true |
MySQL 8.0で追加 次を使うためにセット ※他にサーバ側の設定も必要 LOAD DATA LOCAL INFILE 'ファイル名' |
useSSL | false |
MySQL 8.0で追加 自分の環境では通信の暗号化はしていないためfalse |
serverTimezone | JST |
MySQL 8.0で追加 自分の環境ではMySQLをインストールしたPCの タイムゾーンが日本時間のためJSTをセット。(インストールしたサーバのタイムゾーンがGMTならGMTでセットとなる) |
characterEncoding | utf8 | 文字化けを回避するためutf8をセット |
rewriteBatchedStatements | true | JDBCの、PreparedStatement.addBatch / executeBatch の速度が劇的に早くなるためセット(javaベースのETLツールなどを使う場合はほぼ必須の設定です) |
useCursorFetch | true | これを使わないと大量データがさばけない |
defaultFetchSize | 1000 | これを使わないと大量データがさばけない |
my.ini に次の記載が必要です。
local_infile=ON
最後に
上記でいくつかはまりましたが、MySQL 8.0で分析関数が使えるようになってとても使いやすいです。
row_number() over() で連番を使えるようになっただけでも助かるのに、
row_number() over(partition by ブレークする項目 order by 並び替え項目) で項目単位に1から番号ふることができます。(縦横変換が助かります)