Oracle blob - 在 sql 命令中插入长(超过 4000 个十六进制数字)数据

发布于 2024-09-19 02:32:56 字数 368 浏览 3 评论 0原文

在 Oracle 11 中,如何将大数据(约 100000 个十六进制数字)插入 Blob 字段,仅使用 sql 命令(没有带有 load 子句等的任何外部数据)。

update tablename set fieldname='AA';

作品 - 1 字节;

update tablename set fieldname='AA...(4000 hex-digits)...AA';

没有。 Niether Concat 有帮助;字符串不能超过 4000 个字符。有没有其他方法,仅使用sql命令?

How can I, in Oracle 11, insert large data (~100000 hex-digits) into Blob field, using sql command only (without any external data with load cluase or such).

update tablename set fieldname='AA';

Works - 1 byte;

update tablename set fieldname='AA...(4000 hex-digits)...AA';

Doesn't. Niether Concat helps; strings can't be larger than 4000 chars. Is there other way, using sql command only?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只为一人 2024-09-26 02:32:56

据我所知这是不可能的。您可以做的是:

  1. 从表中选择 blob 从
  2. 结果集中获取 blob
  3. 从 blob 获取输出流
  4. 写入流
  5. 刷新并更新表
  6. 提交

中的 blob您应该能够通过创建临时 blob 并使用它进行写入和更新来替换步骤 1-2 。

As far as I know it is not possible. What you can do is:

  1. select blob from table
  2. get blob from resultset
  3. get outputstream from blob
  4. write to stream
  5. flush and update blob in table
  6. commit

You should be able to replace steps 1-2 by creating a temporary blob and using that for writing and updating.

春风十里 2024-09-26 02:32:56
DECLARE
  buf RAW(100000);
BEGIN
  buf := hextoraw('626567696E2030207575656E636F64652E6275660D0A6');
  UPDATE tableName SET columnName = buf;
  --or
  INSERT INTO tableName(charColumn, BlobColumn) values ('Sting', buf);
END;
DECLARE
  buf RAW(100000);
BEGIN
  buf := hextoraw('626567696E2030207575656E636F64652E6275660D0A6');
  UPDATE tableName SET columnName = buf;
  --or
  INSERT INTO tableName(charColumn, BlobColumn) values ('Sting', buf);
END;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文