DashDB行有组织的表是否支持CLOBS?

时间:2017-02-06 16:03:37

标签: blob ibm-cloud clob dashdb

我们正在尝试将大型CLOBS存储到DashDB中进行分析。是的,已创建的表是按行组织的。

CREATE TABLE test(
  KEY VARCHAR(1000) NOT NULL,
  MP3_FILE CLOB(250M) NOT NULL,
  PRIMARY KEY(KEY)
) ORGANIZE BY ROW;

如果我们可以存储BLOBS就更好了,所以我们不必通过base64来增加文件大小。

但是,即使使用CLOBS,我们也会收到错误:

com.ibm.db2.jcc.am.SqlSyntaxErrorException:DB2 SQL错误:SQLCODE = -204,SQLSTATE = 42704,SQLERRMC = DASH107483.TEST,DRIVER = 3.71.22

我们使用的代码类似于:

PreparedStatement pre = connection.prepareStatement("insert into test (key,mp3_file) values (?,?)");
pre.setString(1, "test");
pre.setCharacterStream(2, new StringReader(encoded), encoded.length());
int count = pre.executeUpdate();
connection.commit();
logger.info("mergedMP3 file isUpdated: " + count);
pre.close();
connection.close();

谢谢, 亚伦

2 个答案:

答案 0 :(得分:1)

我认为这个问题与CLOB无关。错误消息表明找不到表DASH107483.TEST

是否有可能使用小写字符创建表格(例如,名称在DDL中用双引号括起来)?

CREATE TABLE "test"( KEY VARCHAR(1000) NOT NULL, MP3_FILE CLOB(250M) NOT NULL, PRIMARY KEY(KEY) ) ORGANIZE BY ROW;

运行时输出的内容

SELECT TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA='DASH107483' ORDER BY TABNAME;

答案 1 :(得分:0)

最后,字节的使用似乎运作良好。

PreparedStatement pre = connection.prepareStatement("insert into largespeechsynthesis(KEY,MP3_FILE) values (?,?)");
pre.setString(1, attachmentID.replace(".mp3", ""));
pre.setBytes(2, Files.readAllBytes(mergedFile.toPath()));
int count = pre.executeUpdate();
logger.info("mergedMP3 file isUpdated: " + count);
connection.commit();
pre.close();
connection.close();