Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

database

OracleでSJISのデータベースの文字列カラムにUnicodeの絵文字をJavaで格納するには

SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET' -- JA16SJISTILDE SJISのデータベースの文字列カラムにUnicodeの絵文字を格納するには、NVARCHAR2型のカラムを使います。次にJavaではシステムプロパティに-Doracle.jdbc.d…

MySQLのMacクライアントはNavicat Liteがわりといい

Navicat - Download Center - Download the World's Best Oracle Manager, MySQL Front End, SQLite GUI Frontend, SQL Azure & PostgreSQL GUI for Windows, Mac OS X & Linux - Download Now! Support Access to MySQL, Excel to MySQL, MySQL editor, MyS…

MySQLの接続許可ユーザーを取得するSQL

select user,host,password from mysql.user; +--------+---------------+------------------+ | user | host | password | +--------+---------------+------------------+ | xxxxxx | 192.168.0.% | xxxxxxxxxxxxxxxx | +--------+---------------+-------…

CentOSにMySQLをyumでインストールするまとめ

// デフォルトで入っているMySQLをアンイストールする $ sudo remove mysql // 以下を追記する $ sudo vi /etc/my.cnf [client] default-character-set=utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-serv…

MySQLで結合した結果をdeleteする

delete from table_a using table_a left outer join table_b on table_a.id = table_b.id where table_a.name = 'aaa' from句に指定したテーブルを削除する。カンマ区切りで複数のテーブルを指定できる。using以降に結合を指定する。もちろん、SQL標準では…

MySQLで連番を振る

MySQLにrownum()みたいなものはないので、変数を使う。まあ本来リレーショナルデータベースは集合の世界なんで、順序なんてつけたらダメだけど、混沌とした僕らのシステム開発では、必要悪なんだろうか。とか思う。 select emp.emp_no, @i:=@i+1 as rownum f…

Spring + DBCP + MySQLで接続が閉じたコネクションを利用して例外が発生することを防ぐ

BasicDataSourceのvalidationQueryプロパティに検証用SQLを設定する。Spring設定ファイル。

MacPortsでMySQLをインストールおさらい。

MacPortsで入れたかったから。 MacPortsがない人はまずインストールしてパスに追加する。マンパスも。 $ vi .bash_profile export PATH=opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/man:$MANPATH$ sudo port install mysql5 The MySQL c…

MySQLの設定おさらい

# vi /etc/my.cnf [client] default-character-set=utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 default-storage-eng…

DB2でPL/SQLが動く!?

日本IBMは2009年5月21日,RDBMS(リレーショナル・データベース管理システム)の新版「DB2 9.7」を発表した。新たに,OracleのDBMSが備えるストアド・プロシージャ開発言語「PL/SQL」を利用できるようにした。これにより,Oracleで開発したDBアプリケーショ…

インメモリ・データグリッド

インメモリ・データグリッドとは、複数ハードウェアから構成されたサーバ群で仮想的な共有メモリ領域を確保して、クライアントからの透過的なアクセスを実現した状態で大量のデータを高速処理する技術のこと。 CTC・オラクル・HP、インメモリ・データグリッ…

update文にfrom句!?

こんな感じのSQL文があった。 UPDATE table_a SET column_a = 1 FROM ( SELECT column_b, column_c, column_d FROM table_b ) table_b WHERE column_a = 2 AND table_b.column_b = table_a.column_b AND table_b.column_c = table_a.column_c AND table_b.co…

有効期間があるレコードを取得するSQLの書き方

よくある履歴管理みたいなやつ。 パフォチューしてて『アート・オブ・SQL』調べてたら載ってた。たとえばこんなの。 # PostgreSQL 8.1で動作を確認。 CREATE TABLE item_history ( item_no VARCHAR , item_name VARCHAR , price INTEGER , enforcement_date …

PostgreSQLでconnectby関数を使う

階層構造をSQLで取得するときはWith句を使えばいいんだけど、 PostgreSQLは次の8.4からしかWith句に対応していない。 Oracleにあるのと同じconnectby関数が利用できる。 だけどデフォルトではその関数は入っていない。 %POSTGR_HOME%\share\contrib\tablefun…

PostgreSQLの実行計画

explain analyze SELECT 〜 出力はこんなの。 Sort (cost=497.34..497.34 rows=1 width=905) (actual time=744.740..748.105 rows=1643 loops=1) …

PostgreSQLのANALYZE

PostgreSQLのbinディレクトリにて。 # vacuumdb -U ユーザー名 --all --full --analyzeVACUUM & ANALYZEする。

SQL文整形アプレットサイト

SQLinForm - Homepage 超便利。

PostgreSQLのpsqlでデータベースを選択する&テーブル一覧を取得する

データベースを選択する。 \c データベース名テーブル一覧を取得する。 \z

PostgreSQLのpsqlでテーブルの構成を取得する

\d 'テーブル名'

PostgreSQLでコマンドプロンプトからpsqlにパスワードつきでログインする

psql -U 'ユーザー名' -W 'データベース名' パスワードを変更する alter user 'ユーザー名' with password '新しいパスワード'

PostgreSQLにはOLEではなくODBCで接続する

黒猫 SQL Studio で PostgreSQL に接続するには、ODBCを使用します。PostgreSQL に付属の OLE DB Provider は実装が不十分で使用できません。 黒猫ソフトウェア工房 - Wiki - PostgreSQL

EXPLAIN PLANを使ってOraleの実行計画を取得する

EXPLAIN PLAN の使い方 EXPLAIN PLAN 文は EXPLAIN PLAN FOR + SQL 文によってオラクルのオプティマイザが選択した「実行計画=(予定)」を取得することできる。 ※ EXPLAIN PLAN 文による実行計画の取得は SQL の実際の実行が行なわれないため即座に終了する…

カーディナリティ

いつもごっちゃになるからメモ。 カーディナリティ度 (選択度) カーディナリティ度が低いとは、カラムの値の種類がレコード数に比べて少ないことをあらわす。 カーディナリティ度が高いとは、カラムの値の種類がレコード数に比べて多いことをあらわす。 http…

Oracle 11gではデフォルトだとユーザーのパスワード有効期限は180日

11g のDEFAULTプロファイルではユーザー・アカウントのパスワードは180日で自動的に期限切れとなります。(初期状態)データベースにはデフォルトのプロファイルが存在しており、ユーザー作成時に個別にプロファイルを指定しない限りは、デフォルト・プロフ…

主要なDBのJDBC接続文字列一覧

意外にデータベースベンダーのサイトからすぐに検索できないもんなんだなあ。 なんかサンプルとかメモっぽい感じのやつしか見つからない。 その点MySQLのサイトはきちんとしてる印象。 jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property…

MySQLでSQLファイルの読み込み

mysql> source ファイルのパスまたは $ /usr/local/mysql/bin/mysql -u ユーザー名 -pパスワード -f -vvv < ファイルのパス

DbUnit形式でExcelまたはXMLファイルにテーブルのダンプを取る

import java.io.FileOutputStream; import org.dbunit.JdbcDatabaseTester; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.excel.XlsDataSet; //import org.dbunit.dataset.xml.FlatXmlD…

org.gjt.mm.mysql.Driverとcom.mysql.jdbc.Driverの違い

けっこう前から気になってた。 受け持ってた研修のテキストもorg.gjt.mm.mysql.Driverだったし。 調べてみた。 org.gjt.mm.mysql.Driverは旧式のドライバ。 com.mysql.jdbc.Driverを使うこと。 スッキリ。

とりあえずMySQLでEMP表とDEPT表を作っとく

DBのテスト用テーブルとしてお決まりのEMP表とDEPT表をとりあえずMySQLで作っとく。 CREATE TABLE `データベース名`.`DEPT` ( `DEPTNO` int(11) NOT NULL, `DNAME` varchar(14) default NULL, `LOC` varchar(13) default NULL, PRIMARY KEY (`DEPTNO`) ) ENG…

MySQLの文字コード設定

■文字コードを設定する/etc/my.cnf を編集する。[client] default-character-set=utf8[mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAM…

MySQLの設定ファイル(Windowsでいうmy.ini)は/etc/my.cnf

タイトルどおり。MySQLの設定ファイルはWindowsではmy.iniだが、 Unix系では/etc/my.cnfだ。デフォルトでは存在しないので、/usr/local/mysql/support-files/my-medium.cnfをコピーする。 または、MySQL Administratorを利用するとOptionsタブを選択したとき…

MacでMySQLをインストールするデフォルトのディレクトリ

/usr/local/mysql/bin/mysql

RailsとMySQLの連携で日本語化いろいろ

ちょっとアプリ作ろうとひさしぶりにRailsをするとハマる。 やっぱりレベルが低い自分。 Railsはまだ1.2使ってるけど(ローカルなら2.0にしてもいいけど、サーバが1.2だから)。 まず、日本語化はここを参照。Railsマスターへの道:Ruby on Rails 日本語化 h…

mysqlでパスワードを設定する

SET PASSWORD FOR root@localhost=PASSWORD('新しいパスワード');

MySQLのバージョンを調べるSQL文

select version();

Oracleでデータベースの文字コードを調べるSQL

select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'

Oracleでtrim('') is nullはtrue

Oracleは空文字とnullは区別しないって頭ではわかってたけど、 実際にSQLで「trim('') is null」を発行してもtrueになった。

ObjectBrowserでのスクリプト実行

「;」で終わっていると連続したSQLを実行できない。 「;」を「\r\n/」で置換しておく。

MySQLでのバッチ

MySQLのWindowsのサービス名が「mysql」として。 init.bat net start mysql mysql --force -u root -p**** -t -vvv < test.sql「--force」はエラーがあっても続行(最初はDROP DATABASEで落ちるので)。 「-p」のあとにパスワードを。ただし直書きしているので…

DB2にバッチでSQLを実行する

適当なバッチファイルに以下の内容を。 echo connect to データベース名 user ユーザ名 using パスワード#>>all.sql echo.>>all.sql type a.sql>>all.sql echo.>>all.sql type b.sql>>all.sql echo.>>all.sql echo connect reset# echo.>>all.sql db2cmd db2…

CSEで起動時にデータベースに接続する

オプションで指定します。 DB2の場合 cse.exe /dbms=odbc /srv=データソース名(DSN) /user=ユーザ名 /pwd=パスワード /title=タイトルバーに表示するタイトル(任意)

DB2にCSVデータをバッチでインポート

dllを作成(.dll) CONNECT TO データベース名 USER ユーザ名 USING パスワード; IMPORT FROM CSVファイル名 OF DEL REPLACE INTO テーブル名; CONNECT RESET; バッチファイルを作成(.bat) db2cmd db2 -tvf dllファイル名.dll

MySQL 5.0.26 - 文字エンコーディング指定の新構文、致命的なバグ修正も

http://journal.mycom.co.jp/articles/2006/10/13/mysqlfix/ 文字エンコーディング指定のための新構文の追加(Bug#11972) コマンドラインツールmysqlにおいて、CHARSETコマンドという文字エンコーディング指定のための新構文が追加された。以下のように実行す…

使ってみようApache Derby - サーバも組み込みもOKなお手軽DB

http://journal.mycom.co.jp/articles/2006/10/11/derby/

使ってみようH2 Database Engine - 最強の呼び声もあるすごいヤツ

http://journal.mycom.co.jp/articles/2006/10/12/h2/

日付の書式

日付書式 意味 D 曜日(1〜7) DD 日(1〜31) DDD 通年の日(1〜366) E 元号の略称 EE 元号 HH 時間(1〜12) HH24 時間(0〜23) MI 分(0〜59) MM 月(01〜12) YYYY 年 YY 年の下2桁