问题标签 [clob]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - 当使用不在 ASCII 代码范围内的 unicode 字符时,使用带有 NCLOB 值的 sqlldr.exe 时出现问题
当我们使用 sqlldr 使用 lob 文件中的文本值填充 NCLOB 列并且该字符不在常规 ASCII 代码范围内时,sqlldr 炸弹。
日志文件中看似相关的部分:
控制文件有
java - 为什么 Hibernate 转而使用 LONG 而不是 CLOB?
看起来 HibernateLONG
在 3.5.5 版本(我们从 3.2.7 升级)中开始使用数据类型,而CLOB
不是type="text"
.
这会导致问题,因为Oracle 中的数据类型是不应使用LONG
的旧的过时数据类型(请参阅http://www.orafaq.com/wiki/LONGLONG
),并且表中的列不能超过一个一种数据类型。
有谁知道为什么这已经改变?
我尝试将 OracleSetBigStringTryClob
属性设置为 true(如Hibernate > CLOB > Oracle :( ) 中所建议的那样,但这不会影响数据类型映射,而只会影响与我的情况无关的数据传输内部。
一种可能的解决方法是覆盖org.hibernate.dialect.Oracle9iDialect
:
然而,这是最后的手段——覆盖这个类更接近于分叉 Hibernate,我宁愿避免这样做。
谁能解释为什么这样做?这应该作为一个错误提出吗?
[更新]:我创建了https://hibernate.atlassian.net/browse/HHH-5569,让我们看看会发生什么。
sql - 如何在 Oracle 中查询 CLOB 列
我正在尝试运行一个查询,其中包含一些 CLOB 数据类型的列。如果我像往常一样运行查询,所有这些字段都只是(CLOB)
作为值。
我尝试使用DBMS_LOB.substr(column
),我得到了错误
如何查询 CLOB 列?
sql - DB2:如何插入带有换行符的 clob
我有一件简单的事情想做,但在尝试和完成时是如此令人沮丧。我只想获取一些价值,例如:
并将其插入到CLOB
字段中并在 DB2 中保留换行符。像这样的声明
导致a value with line breaks
被插入。
php - 拉取与 VARCHAR2 不同的 Oracle CLOB?
使用 MySQL,我可以在 TEXT 列中存储大块文本,就像我使用任何其他列类型一样,没有问题。
似乎当我尝试在 Oracle 上对 CLOB 执行相同操作时,出现错误。
这是我要拉的地方:
...这是我在 while() 循环中尝试 print_r() $row 时得到的结果:
...(连同查询中的其他列)
我需要对 CLOBS 做些什么特别的事情,或者我的语法有点不对劲。
谢谢 :)
java - 将大文本文件上传到 DB2 CLOB 字段
好吧,我已经把我的头撞在墙上一段时间了,所以就这样吧……
我目前正在编写一个 Java (1.5) 程序,该程序可以将非常大的 (200MB+) 文本文件上传到 DB2 CLOB 列,但遇到了一些问题。
在我的研究过程中,有几个代码示例建议我使用 PreparedStatement 方法setCharacterStream()
将数据上传到 CLOB 字段,给我这样的信息:
这很好,除了该setCharacterStream()
方法需要一个 LENGTH 值,指定要写入该字段的字符数。考虑到这一点,这将可以写入 CLOB 字段的字符数限制为Integer.MAX_VALUE
. 稍微算一下,这会将我可以上传的文本文件的大小限制为 524288 字节,或大约一半兆字节。由于一个 CLOB 字段最多可以存储 2GB 的数据,我有点困惑。
我看到在 Java 1.6 中 PreparedStatement 的setCharacterStream()
方法已被修改为不需要长度,并且会读取直到遇到文件结尾。不幸的是,我需要使用 Java 1.5,所以这不是一个有效的选项。
在最后一项研究中,我读到 Java 1.5 的 PreparedStatement 具有类似的功能,Javadoc 声称:
“...通过 java.io.Reader 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件结尾。”
如果存在,为什么该setCharacterStream()
方法仍然需要长度参数?你会为长度参数传递什么来使用这个功能?有没有更好的方法来做到这一点,我错过了?
有什么想法吗?
php - 使用 PHP PDO 在浏览器屏幕上输出 Informix clob 或文本
我从数据库查询中获取 CLOB 或 Informix 类型的 TEXT 结果(文本),但不知道如何输出。
- 资源 ID #47的
echo $tmp
结果。 - A
var_dump($tmp)
导致类型(流)的资源(47)。 - An
fpassthru($tmp)
使显示空白。 - 如果我尝试使用 PDO::PARAM_STR 作为第三个绑定参数,显示仍然是空白的。
所以我不知道如何获取 CLOB 中的文本(它是几 KB,而不是 MB)。有任何想法吗?
java - 使用 SetBigStringTryClob 通过 Oracle JDBC 处理 CLOB 的性能影响
我正在审查一些用于在 oracle 数据库上处理 CLOB 的旧 Java/JDBC 代码。现有代码使用类似于此问题中提到的方法的方法。
我发现一篇文章说:
在 Oracle JDBC 10g 之前,为了在 JDBC 中操作 CLOB 数据,使用了 Oracle 扩展类 oracle.sql.CLOB。但是现在,Oracle JDBC 10g 有一些增强功能可以简化 JDBC 应用程序中的 CLOB 操作。这允许使用一些可用的标准 API 来处理大数据,而不是使用 Oracle 扩展类。
本文提供了有关此增强功能的详细信息的以下信息:
默认情况下,preparedStatement.setString() 方法将允许处理最多 32765 个字节的字符串。为了插入大于 32765 字节的数据,可以设置一个新引入的 Connection 属性——SetBigStringTryClob。这迫使preparedStatement.setString() 使用另一个新引入的方法,OraclePreparedStatement.setStringForClob()。
但是它警告:
... 以这种方式处理大量数据可能并不明智;流式传输数据是更好的选择。
但以上是该文章中唯一与性能相关的警告。我的问题是,如果我的代码中的所有 CLOB 访问都已经通过 String 对象完成,我是否应该担心这种方法更改可能导致的任何其他潜在性能问题?换句话说,我的应用程序没有使用流式传输提供的好处,因为它已经总是在 String 对象中加载 CLOB,因此上述警告可能会被忽略,因为我们目前的目标不是提高性能。由于切换到此技术,是否可能出现任何其他与性能相关的问题?
c# - 使用 C# 将 Oracle Clob 数据导出到 csv 的建议
您能否建议我们如何将 oracle clob 数据字段导出到 csv 文件。该表还包含其他常规数据类型。此外,如果 clob 数据无法放入 csv 中,还有哪些其他可用选项?
谢谢,纳文
java - 禁用上下文 LOB 创建作为 createClob() 方法引发错误
我正在使用带有 Oracle 10g 的 Hibernate 3.5.6。我在初始化期间看到以下异常,但应用程序本身工作正常。这个异常的原因是什么?以及如何纠正?
异常
禁用上下文 LOB 创建作为createClob()
方法抛出错误:java.lang.reflect.InvocationTargetException
Info
Oracle版本:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 JDBC驱动:Oracle JDBC驱动,版本:11.1.0.7.0