0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

sqlplus -> blob

Posted at
blob_to_base64.sql
SET PAGESIZE 0
SET LONG 1000000
SET LINESIZE 1000
SET FEEDBACK OFF
SET HEADING OFF

DECLARE
    v_blob BLOB;
    v_clob CLOB;
BEGIN
    -- BLOBデータの取得
    SELECT your_blob_column INTO v_blob
    FROM your_table
    WHERE your_condition;

    -- BLOBデータをBase64エンコード
    v_clob := UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(v_blob));

    -- Base64エンコードされたデータを出力
    DBMS_OUTPUT.PUT_LINE(v_clob);
END;
/
EXIT;
motteru
#いつもの
sqlplus -s your_user/your_password@your_data_source @blob_to_base64.sql > base64_output.txt
いつもの2.ps
# Base64エンコードされたファイルの読み込み
$base64String = Get-Content -Path "path/to/base64_output.txt"

# Base64デコード
$bytes = [System.Convert]::FromBase64String($base64String)

# ファイルに書き出し
$outputFilePath = "path/to/output/file"
[System.IO.File]::WriteAllBytes($outputFilePath, $bytes)

Write-Output "BLOB data has been successfully written to the file."

1.SQL*Plusの制約
 ・SQLPlusはバイナリデータ(BLOB)を直接扱うのが難しいです。SQLPlusは主にテキストデータを処理するためのツールであり、バイナリデータをそのまま取り扱うことができません。
 ・BLOBデータを直接ファイルに書き出すことができないため、Base64エンコードを利用してテキストデータに変換します。

2.Base64エンコードの利便性

・Base64エンコードはバイナリデータをテキスト形式に変換する方法であり、テキスト形式にすることでSQL*Plusや他のテキスト処理ツールで扱いやすくなります。
・Base64エンコードは汎用的なエンコーディング方法であり、デコードも容易です。ほとんどのプログラミング言語やツールでBase64デコードがサポートされています。

3.クライアント側での処理:
・クライアント側でBase64エンコードされたデータを取得し、適切なツール(例えば、PowerShell)でデコードしてファイルに書き出すことができます。
・Base64エンコードされたデータは文字データなので、SQL*Plusの出力として簡単に扱うことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?