java - Spring 批量 & ORA-01792 : maximum number of columns in a table or view is 1000

标签 java sql spring oracle spring-batch

我开发了一个 spring batch 应用程序,它从 6 个 oracle 表中读取数据并进行处理。问题是读取了超过 1000 列的数据。这是通过在 SQL 端执行 ALTER session SET "_fix_control"='17376322:OFF'; 命令手动解决的,但我无法在 spring 批处理代码端执行此命令。任何人都可以帮助了解如何使用 spring batch 执行 ALTER session SET "_fix_control"='17376322:OFF' 命令。

在执行下面给出的选择语句之前,我必须执行“ALTER session SET "_fix_control"='17376322:OFF'"命令:

<batch:job id="extract">
        <batch:step id="step1">
            <batch:tasklet>
                <batch:chunk reader="ItemReader"
                    processor="Processor" writer="ItemWriter"
                    commit-interval="1">
                </batch:chunk>
            </batch:tasklet>
        </batch:step>
    </batch:job> 
<bean id="ItemReader"
        class="org.springframework.batch.item.database.JdbcCursorItemReader" scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql">
            <value>
            <![CDATA[
 SELECT 
[1000+ Columns]
FROM #{jobParameters[table1]} D 
left join #{jobParameters[table2}  A on D.xyz=A.xyz
left join #{jobParameters[table3]} D2 on D.xyz=D2.xyz
left join #{jobParameters[table4]} A2 on D.xyz = A2.xyz
left join #{jobParameters[table5]} fed on D.xyz=fed.xyz
left join #{jobParameters[table6]} g on d.xyz=g.xyz
left join #{jobParameters[table7]} l on d.xyz=l.xyz

            ]]>
            </value>
        </property>

        <property name="rowMapper">
            <bean class="XXX.DataRowMapper" />
        </property>
    </bean>

最佳答案

可以在数据源上设置...

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${datasource.url}" />
<property name="username" value="#" />
<property name="password" value="#" />
<property name="connectionInitSqls" value="${datasource.initsql}" />
</bean>

然后在您的属性中...

datasource.initsql=ALTER session SET "_fix_control"='17376322:OFF

关于java - Spring 批量 & ORA-01792 : maximum number of columns in a table or view is 1000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39034045/

相关文章:

java - 使用 BLOB 对象将图像插入 SQL 表时出现异常

java - java中的RSA签名和验证

PHP |如果存在任何具有相同ID的记录,Mysql如何停止插入

sql - 如何使用 SQL 从数据库列中选择前 10 个最大的数字?

java - Java 8 Lambda 表达式编译成什么?

java - 从 docker 启动 HSQL 服务器时运行默认脚本

mysql - SQL 查询为在一列中具有值 = 0 且在另一列中具有唯一 ID 的行选择记录

java - 计划的 Spring MVC 任务不更新数据库实体

java - 是否可以使用 Thymeleaf 从列表中发布一个特定项目?

java - 包 org.springframework.data.repository 不存在 spring boot jpa