MySQL で Blob データをテキスト形式に変換する
-
MySQL の
BLOB
データ型 - MySQL でデータベースを作成する
-
CONVERT()
関数を使用して、MySQL で Blob データをテキストに変換する -
CAST()
関数を使用して MySQL で Blob データをテキストに変換する
この記事では、MySQL データベースの BLOB
データ型に焦点を当てます。 BLOB
データ型について詳しく学び、そのさまざまな型について説明します。
この記事の後半では、データを BLOB フィールドから非バイナリ形式に変換するさまざまな方法について説明します。
MySQL の BLOB
データ型
ラージ バイナリ オブジェクト (BLOB
) には、さまざまな範囲の情報を含めることができます。 これは、ファイルまたはイメージのバイナリ ストレージを提供する MySQL の一種のデータ型です。
TINYBLOB
、BLOB
、MEDIUMBLOB
、LONGBLOB
の 4 種類があります。
4つのカテゴリの主な違いは、保存できるデータの量です。 LONGBLOB
はその名前が示すように、ほとんどのデータを保持できますが、TINYBLOB
は最小のデータを保持できます。
BLOB
値は、バイナリ文字列 (バイト文字列) のように処理されます。 それらには、バイナリ文字セット、照合、および比較と並べ替えがあり、列値のバイトの数値を使用して行われます。
TINYBLOB
は最大 255 バイトを格納できます。BLOB
は最大 65535 バイト、つまり 64 KB のデータを格納できます。MEDIUMBLOB
は、最大 16777215 バイト、つまり 16 MB のデータを格納できます。LONGBLOB
は最大 4294967295 バイト、つまり 4 GB のデータを格納できます。
MySQL でデータベースを作成する
MYSQL でデータベースを作成することから始めましょう。 この記事では、MySQL Shell を使用してデータベースと対話します。
集中して手順に従って、明確に理解してください。
この画面は、MySQL Shell を初めて起動したときに表示されます。 JS が MySQL で書かれていることに気付いたかもしれません。これは、これが現在 JavaScript 処理モードであることを示しています。
SQL ステートメントを実行したいので、コマンドを実行する前にまず SQL モードに切り替える必要があります。
これを行うには、\sql
と入力して Enter を押します。
これで SQL モードがアクティブになります。 次に、シェルを MySQL サーバーに接続する必要があります。これで、SQL コマンドを記述して実行できるようになります。
接続するには、\connect root@localhost
と入力して Enter を押します。 ここで、root
は、MySQL Shell のインストール中に設定したユーザー名です。
Enter を押すと、インストール中に入力したパスワードを尋ねられます。 パスワードを入力すると、接続がアクティブになります。
コンソールに表示されるメッセージを確認します。 データベースが選択されていないことを示します。
使用するものを作成しましょう。 データベースを作成するには、create database tech
と書きます。ここで、tech
はデータベース名です。
どんな名前を選んでも自由です。 データベースの作成後にシェルが使用するデータベースを指定する必要があります。
データベースを選択するには、コマンド use tech
を入力します。
tech
が SQL
の前に書かれていることがわかります。これは、現在 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
出力:
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
出力:
ここで注目すべき点の 1つは、シェルからの警告です。 将来のリリースでは、UTF8
は UTFMB4
の別名になります。
明確にするために UTFMB4
を使用することをお勧めします。
CAST()
関数を使用して MySQL で Blob データをテキストに変換する
MySQL は、値を特定の型としてキャストする CAST()
という名前の別の関数を提供します。
CAST()
関数の構文は次のとおりです。
CAST(expression as type)
CAST()
関数は、任意の式を目的の型の値に変換します。
説明フィールドから非バイナリ形式のデータを取得するには、シェルで次のコマンドを入力します。
SELECT CAST(DESCRIPTION AS CHAR(10000) CHARACTER SET UTFMB4) FROM BLOB_DEMO
出力: