标签: clob

使用Oracle SQL Developer将CLOB导出到文本文件

我正在使用Oracle SQL Developer并尝试将表导出为CSV文件.某些字段是CLOB字段,在许多情况下,导出发生时会截断条目.我正在寻找一种方法来解决所有问题,因为我的最终目标是不在这里使用Oracle(我收到了一个Oracle转储 - 它被加载到一个oracle数据库中,但我正在使用其他格式的数据,所以通过CSV作为中间人).

如果对此有多种解决方案,鉴于对我来说这是一次性程序,我不介意更多涉及"做正确"解决方案的黑客类型解决方案.

sql oracle clob oracle-sqldeveloper

13
推荐指数
1
解决办法
6万
查看次数

为什么Hibernate切换到使用LONG而不是CLOB?

看起来Hibernate开始使用LONG版本3.5.5中的数据类型(我们从3.2.7升级)而不是CLOB属性type="text".

这会导致问题,因为LONGOracle中的数据类型是一种旧的过时数据类型(请参阅http://www.orafaq.com/wiki/LONG),不应使用,并且表不能有多个列具有LONGas数据类型.

有谁知道为什么这个改变了?

我试图将Oracle SetBigStringTryClob属性设置为true(如Hibernate> CLOB> Oracle :()中所建议的那样,但这不会影响数据类型映射,只会影响与我的情况无关的数据传输内部.

一个可能的解决方法是覆盖org.hibernate.dialect.Oracle9iDialect:

public class Oracle9iDialectFix extends Oracle9iDialect {
  public Oracle9iDialectFix() {
    super();
    registerColumnType(Types.LONGVARCHAR, "clob");
    registerColumnType(Types.LONGNVARCHAR, "clob");
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,这是最后的手段 - 覆盖这个类更接近于分支Hibernate,我宁愿避免这样做.

任何人都可以解释为什么这样做了吗?这应该是一个bug吗?

[更新]:我创建了http://opensource.atlassian.com/projects/hibernate/browse/HHH-5569,让我们看看会发生什么.

java oracle orm hibernate clob

13
推荐指数
1
解决办法
6102
查看次数

Oracle上的Hibernate:将String属性映射到CLOB列

警告:请参阅下面的答案.此问题是由除10.2.0.4之外的类路径中存在的旧Oracle驱动程序引起的.问题解决了.留下这个问题的其余部分给后人.

我一直在抨击以下内容.这是从我的应用程序代码中提取的简单POJO:

@Entity
@Table(name = "PIGGIES")
public class Piggy {    
    private Long id;
    private String description;

    public Piggy() {}

    @Id
    @GeneratedValue
    @Column(name = "PIGGY_ID")
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    @Lob
    @Column(name = "PIGGY_DESCRIPTION")
    public String getDescription() { return description; }
    public void setDescription(String d) { description = d; }
}
Run Code Online (Sandbox Code Playgroud)

有一个String属性和一个CLOB列.当内容很短(例如"hello world")时,它会持续很好.使用更长的字符串,我得到以下异常:

java.sql.SQLException: operation not allowed: streams type cannot be used in batching
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
        at …
Run Code Online (Sandbox Code Playgroud)

java oracle hibernate jpa clob

12
推荐指数
2
解决办法
7万
查看次数

如何在Oracle 11g中存储无限制的字符?

我们在Oracle 11g中有一个带有varchar2列的表.我们使用专有的编程语言,其中此列定义为字符串.最大值我们可以在此列中存储2000个字符(4000个字节).现在要求是列需要存储超过2000个字符(实际上是无限字符).出于维护原因,DBA不喜欢BLOB或LONG数据类型.

我能想到的解决方案是从原始表中删除此列,并为此列创建一个单独的表,然后将每个字符存储在一行中,以获得无限制的字符.此tble将与原始表连接以进行查询.

有没有更好的解决方案来解决这个问题?

更新:专有编程语言允许定义string和blob类型的变量,没有CLOB选项.我理解给出的回复,但我无法接受DBA.我明白偏离BLOB或LONG将是开发人员的噩梦,但仍然无法帮助它.

更新2:如果我需要的最大值是8000个字符,我可以再添加3个列,这样我就会有4个列,每个列有2000个字符,可以获得8000个字符.因此,当第一列填满时,值将溢出到下一列,依此类推.这个设计会有什么不好的副作用吗?请建议.

oracle types blob clob oracle11g

12
推荐指数
3
解决办法
4万
查看次数

如何在Oracle中为大于32k(例如60,000个字符)的CLOB生成JSON?

1)我必须从oracle select query中创建json,它有三种方法我可以遵循.

SELECT JSON_ARRAY(json_object('id'         VALUE employee_id, 
                   'data_clob'    VALUE data_clob
                     )) from tablename;
Run Code Online (Sandbox Code Playgroud)

我也试过这种方法

2)如果您无法修补/使用该版本,那么Lewis Cunningham和Jonas Krogsboell撰写的优秀软件包:PL/JSON*http://pljson.sourceforge.net/

这是一个很好的包(我在很多数据库安装中都使用它).

包含的示例很好,涵盖了大多数情况.

declare 
  ret json;
begin
  ret := json_dyn.executeObject('select * from tab');
  ret.print;
end;
/
Run Code Online (Sandbox Code Playgroud)

提及在这个答案中也是如此,但不适用于这样的大事. 在oracle 12c中将sql查询的结果作为JSON返回

3)另一种方法是我们可以在select查询之后连接字符串.

FOR rec IN (SELECT employee_id, data_clob
                FROM tablename) LOOP
      IF i <> 1 THEN
        v_result := v_result || ',';
      END IF;

      v_result := v_result || '{"employee_id":' || to_char(rec.employee_id) || ',"data_clob": ' || rec.data_clob || '}';

      i := i + 1; …
Run Code Online (Sandbox Code Playgroud)

sql oracle json plsql clob

12
推荐指数
1
解决办法
5649
查看次数

java.sql.SQLException:不允许操作:在将数据插入Oracle clob数据类型时,不能在批处理中使用streams类型

我正在使用Hibernate Tools 3.2.1.GA和Spring 3.0.2版.我想将数据插入到Oracle(10g)数据库字段中clob,如下所示.

Clob c=Hibernate.createClob(request.getParameter("someTextFieldValueOnJSPPage");
pojoObj.setSomeClobProperty(c);
Run Code Online (Sandbox Code Playgroud)

它工作得很好但是当我尝试使用CKEditor插入数据流时, 我的JSP页面上的demo(CKEditor只是呈现HTML <textarea></textarea>元素)可能涉及格式化文本以及图像,flash等,它会抛出以下异常.

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: could not update: [model.Cms#1]
Run Code Online (Sandbox Code Playgroud)
org.hibernate.exception.GenericJDBCException: could not update: [model.Cms#1]
Run Code Online (Sandbox Code Playgroud)
java.sql.SQLException: operation not allowed: streams type cannot be used in batching
Run Code Online (Sandbox Code Playgroud)

如何解决该异常?这是Oracle驱动程序问题还是其他什么问题?我正在使用ojdbc14.jar,Oracle JDBC Driver version - 9.0.2.0.0.


更新:

使用该Clob类型的实体之一是

public class Cms  implements java.io.Serializable
{
     private BigDecimal cmsId;
     private Clob aboutUs;     //I'm currently dealing with this …
Run Code Online (Sandbox Code Playgroud)

spring jsp hibernate clob oracle10g

11
推荐指数
1
解决办法
3935
查看次数

如何更改dataype CLOB TO VARCHAR2(sql)

表:客户

ID      NAME             DATATYPE
NUMBER  VARCHAR2(100)    CLOB
Run Code Online (Sandbox Code Playgroud)

我想将DATA列更改CLOB为`VARCHAR2(1000)

我曾经尝试ALTER TABLE customers MODIFY DATA VARCHAR2 (1000)

ALTER TABLE customers MODIFY (DATA VARCHAR2 (1000))

alter table customers  modify
(data VARCHAR2(4000))
Run Code Online (Sandbox Code Playgroud)

如果数据类型不是clob但通常是有效的,ORA-22859因为我使用的是oracle toad/apex.

sql oracle ddl clob varchar2

11
推荐指数
1
解决办法
2万
查看次数

错误 - ORA-22835:缓冲区太小,无法进行CLOB到CHAR或BLOB到RAW的转换

我试图读取blob消息并在我的一个过程中将其显示为变量,但我收到以下错误:

错误 - ORA-22835:缓冲区对于CLOB到CHAR或BLOB到RAW的转换太小(实际:9923,最大值:2000)

我用google搜索并找到了修改blob消息的建议,如下所示,但宁愿将完整的blob消息显示为字符串.

UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(variable_name,2000,1)) 
Run Code Online (Sandbox Code Playgroud)

如何显示完整的消息?我可以更改数据库或过程级别的设置吗?

sql oracle stored-procedures blob clob

11
推荐指数
1
解决办法
6万
查看次数

如何将.dmp文件(Oracle)导入MySql DB?

.dmp是在Oracle 10g(Express Edition)中构建的表的转储,其中一个字段是CLOB类型.

我试图简单地将表导出到xml/csv文件然后将其导入MySql,但导出只是忽略了CLOB字段...(我之前使用的是sqldeveloper).

我注意到这篇文章解释了如何将CLOB提取到文本文件,但似乎错过了对其他字段或至少主键字段的处理.是否可以通过创建完整表的csv?(我根本不熟悉plsql)

随着蛮力的方法,我可以使用我的python接口简单地查询所有记录并将其假脱机到一个平面文件,但我担心它将需要一个LOOOONG时间(查询所有记录用ascii替换所有本机逗号. ..)

多谢你们!

mysql import export clob

10
推荐指数
2
解决办法
3万
查看次数

Oracle:LONG还是CLOB?

从这两个线程,

LONG过时且不赞成使用.甲骨文说,

不要创建包含LONG列的表.请改用LOB列(CLOB,NCLOB).仅支持LONG列以实现向后兼容性.

Oracle还建议您将现有的LONG列转换为LOB列.与LONG列相比,LOB列的限制要少得多.此外,LOB功能在每个版本中都得到了增强,而LONG功能在几个版本中都是静态的.

但是,如果没有此处提到的解决方法,您无法从远程数据库中读取CLOB .

我应该更喜欢在表格中存储一些文字?还是有比这两个更好的解决方案?

database oracle clob

10
推荐指数
1
解决办法
1万
查看次数