小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Oracleでデータベースの中身をバイナリ形式で出力する方法

はじめに

この記事では、Oracleデータベース内に格納したテキストデータを16進数のバイナリで出力する方法を紹介します。

Oracleデータベースを使っていてデータベースの中に格納したテキストデータを16進数のバイナリ表示で確認したい場合、dump関数というのが使えます。

基礎からのOracle (DVD付) (プログラマの種シリーズ)
西沢 夢路
ソフトバンククリエイティブ
売り上げランキング: 74,933

データベースの中身をバイナリ形式で出力する方法

以下のようなテーブルがあった場合、名前とふりがなのカラムをバイナリで出力してみます。

dump関数の引数に列名と1016というパラメタを指定します。1016は、16進数+文字コードの表示という意味になります。

select ID, dump(NAME, 1016), dump(FURIGANA, 1016) from table01;

以下は、その実行結果です。

SQL>INSERT INTO "HOGE"."TABLE01" (ID, NAME, FURIGANA) VALUES ('1', '山田 太郎', 'やまだ たろう');
SQL> select ID, dump(NAME, 1016), dump(FURIGANA, 1016) from table01;
         1
Typ=1 Len=15 CharacterSet=AL32UTF8: e5,b1,b1,e7,94,b0,e3,80,80,e5,a4,aa,e9,83,8e
Typ=1 Len=21 CharacterSet=AL32UTF8: e3,82,84,e3,81,be,e3,81,a0,e3,80,80,e3,81,9f
,e3,82,8d,e3,81,86

16進数で表示されましたね。

UTF-8対応のバイナリエディタで確認する

今度は、得られた16進数をUTF-8対応のバイナリエディタで確認してみます。BZというバイナリエディタであれば、UTF-8に対応しています。

BZを開き、さきほど出力された16進数を1つ1つ手打ちで入力していくと、"山田 太郎"と表示されるのが確認できます。