MySQL で Blob データをテキスト形式に変換する

Neha Imran 2023年6月20日
  1. MySQL の BLOB データ型
  2. MySQL でデータベースを作成する
  3. CONVERT() 関数を使用して、MySQL で Blob データをテキストに変換する
  4. CAST() 関数を使用して MySQL で Blob データをテキストに変換する
MySQL で Blob データをテキスト形式に変換する

この記事では、MySQL データベースの BLOB データ型に焦点を当てます。 BLOB データ型について詳しく学び、そのさまざまな型について説明します。

この記事の後半では、データを BLOB フィールドから非バイナリ形式に変換するさまざまな方法について説明します。

MySQL の BLOB データ型

ラージ バイナリ オブジェクト (BLOB) には、さまざまな範囲の情報を含めることができます。 これは、ファイルまたはイメージのバイナリ ストレージを提供する MySQL の一種のデータ型です。

TINYBLOBBLOBMEDIUMBLOBLONGBLOB の 4 種類があります。

4つのカテゴリの主な違いは、保存できるデータの量です。 LONGBLOB はその名前が示すように、ほとんどのデータを保持できますが、TINYBLOB は最小のデータを保持できます。

BLOB 値は、バイナリ文字列 (バイト文字列) のように処理されます。 それらには、バイナリ文字セット、照合、および比較と並べ替えがあり、列値のバイトの数値を使用して行われます。

  1. TINYBLOB は最大 255 バイトを格納できます。
  2. BLOB は最大 65535 バイト、つまり 64 KB のデータを格納できます。
  3. MEDIUMBLOB は、最大 16777215 バイト、つまり 16 MB のデータを格納できます。
  4. LONGBLOB は最大 4294967295 バイト、つまり 4 GB のデータを格納できます。

MySQL でデータベースを作成する

MYSQL でデータベースを作成することから始めましょう。 この記事では、MySQL Shell を使用してデータベースと対話します。

集中して手順に従って、明確に理解してください。

MySQL シェル

この画面は、MySQL Shell を初めて起動したときに表示されます。 JS が MySQL で書かれていることに気付いたかもしれません。これは、これが現在 JavaScript 処理モードであることを示しています。

SQL ステートメントを実行したいので、コマンドを実行する前にまず SQL モードに切り替える必要があります。

これを行うには、\sql と入力して Enter を押します。

SQLモード

これで SQL モードがアクティブになります。 次に、シェルを MySQL サーバーに接続する必要があります。これで、SQL コマンドを記述して実行できるようになります。

接続するには、\connect root@localhost と入力して Enter を押します。 ここで、root は、MySQL Shell のインストール中に設定したユーザー名です。

Enter を押すと、インストール中に入力したパスワードを尋ねられます。 パスワードを入力すると、接続がアクティブになります。

SQL 接続

コンソールに表示されるメッセージを確認します。 データベースが選択されていないことを示します。

使用するものを作成しましょう。 データベースを作成するには、create database tech と書きます。ここで、tech はデータベース名です。

どんな名前を選んでも自由です。 データベースの作成後にシェルが使用するデータベースを指定する必要があります。

データベースを選択するには、コマンド use tech を入力します。

データベース シェルの作成

techSQL の前に書かれていることがわかります。これは、現在 tech データベースにいて、クエリを直接実行できることを意味します。

BLOB データ型のいくつかのフィールドを持つ tech データベースにテーブルを作成しましょう。 テーブルを作成するには、シェルで次のコマンドを入力します。

CREATE TABLE BLOB_DEMO
(
    FIRST_NAME VARCHAR(20),
    LAST_NAME VARCHAR(20),
    AGE INT,
    DESCRIPTION BLOB
);

テーブルが作成されます。 Description フィールドのデータ型を BLOB として指定しました。

MySQL シェルで作業するとき、テキストを挿入して BLOB データ型の動作を観察します。 テーブルにデータを挿入するには、シェルで次のコマンドを入力します。

INSERT INTO BLOB_DEMO VALUES
(
    "WILLIAM",
    "JOHN",
    27,
    "William John is a computer scientist."
),
(
    "BEN",
    "MARK",
    32,
    "Ben is a doctor. He lives in America."
);

データがテーブルに挿入されます。 テーブルからすべての行をフェッチしましょう。

テーブルからすべてのデータを取得するには、シェルで次のコマンドを記述します。

SELECT * FROM BLOB_DEMO

出力:

Shellでテーブルデータを表示

DESCRIPTION 列に注意してください。 上で説明したように、BLOB データ型の動作は、バイナリ文字列のようにデータを処理することであり、ここに表示されるのはバイナリ エンコードされたデータです。

ここでの焦点は、実際に読み取り可能なデータをテキスト形式または非バイナリ形式で取得する方法です。 MySQL は、このタスクを実行するための 2つの方法を提供してくれました。

以下でそれらを詳しく見てみましょう。

CONVERT() 関数を使用して、MySQL で Blob データをテキストに変換する

MySQL は、値を特定の型としてキャストする CONVERT() 関数を提供します。 異なる文字セット間でデータを変換します。

CONVERT() 関数の構文は次のとおりです。

CONVERT(expr USING transcoding_name)
```.
`expr`  NULL の場合、関数は NULL を返します。

シェルに次のコマンドを入力して、説明フィールドのデータを非バイナリ形式で取得します。

```sql
SELECT CONVERT(DESCRIPTION USING UTF8) FROM BLOB_DEMO

出力:

MySQL Blob から文字列へ - CONVERT

ここで注目すべき点の 1つは、シェルからの警告です。 将来のリリースでは、UTF8UTFMB4 の別名になります。

明確にするために UTFMB4 を使用することをお勧めします。

CAST() 関数を使用して MySQL で Blob データをテキストに変換する

MySQL は、値を特定の型としてキャストする CAST() という名前の別の関数を提供します。

CAST() 関数の構文は次のとおりです。

CAST(expression as type)

CAST() 関数は、任意の式を目的の型の値に変換します。

説明フィールドから非バイナリ形式のデータを取得するには、シェルで次のコマンドを入力します。

SELECT CAST(DESCRIPTION AS CHAR(10000) CHARACTER SET UTFMB4) FROM BLOB_DEMO

出力:

MySQL Blob から文字列へ - CAST