概述
超过32000字节字符串通过insert into values的方式插入崖山数据库CLOB类型字段(无论是DBeaver还是yasql),会报YAS-04107 string exceeding limit 32000错误。本文通过jdbc动态变量绑定的方案支持超过32000字节字符串插入到CLOB类型字段的表。
方案
通过jdbc变量绑定的方式可以支持超过32000字节字符串插入到CLOB类型字段的表,但是不通用,不同的表需要编写不同的插入代码,本方案使用yashandb jdbc和druid组件,动态解析插入sql的字段和字段类型,进行动态变量绑定,可以支持不同的表进行超过32000字节字符串插入到CLOB类型字段的表。
关键代码
pom主要依赖
<dependency>
<groupId>com.yashandb</groupId>
<artifactId>yashandb-jdbc</artifactId>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.20</version>
</dependency>
主要代码
public static void insertSql(DataSource dataSource, String sql) { log.info("insertSql sql = {}", sql); // 获取数据库连接 Connection connection = getConnection(dataSource); PreparedStatement ps = null; // 通过sql获取SQLStatement SQLStatement stmt = InsertSqlParserUtil.getInsertStmt(sql); // 通过SQLStatement动态获取in |