Oracle - 将本地/客户端文件加载到 blob 列

问题描述 投票:0回答:1

有没有办法将文件从本地/客户端文件系统加载到 sqlplus/plsql 脚本中的 blob 列?

我有类似 SQL Developer 功能但已编写脚本的功能。当您在查看表数据时单击 blob 列时,将打开对话框。

oracle plsql oracle-sqldeveloper sqlplus oracle19c
1个回答
0
投票

SQL 语句在服务器上执行,而不是在客户端计算机上执行,并且服务器无法访问本地文件系统来读取那里的文件。

如果您特别想从客户端完成所有操作,请使用 shell 脚本(或等效脚本)并且:

  1. 从要加载的文件中读取 2000 个字节。

  2. 将2000字节的二进制数据转换为4000个十六进制字符。

  3. 重复直到读取文件。

  4. 执行此操作时,动态创建一条插入语句:

    INSERT INTO table_name (
      blob_column
    ) VALUES (
      EMPTY_BLOB()
      || HEXTORAW('<first 4000 hexadecimal characters>')
      || HEXTORAW('<next 4000 hexadecimal characters>')
      -- ...
      || HEXTORAW('<last 4000 hexadecimal characters>')
    );
    
  5. 执行

    sqlplus
    中的SQL语句。

否则,将文件传输到数据库服务器并从那里加载文件。

© www.soinside.com 2019 - 2024. All rights reserved.