当前位置: 首页 > 知识库问答 >
问题:

如何将临时表、Spring Jdbc和连接池一起使用?

袁永贞
2023-03-14

我必须使用带有spring jdbc和tomcat mysql连接池的临时表。我有4条声明:

  • 如果存在临时表(可能不需要),请删除该表

我对每一个都使用以下代码:

getJdbcTemplate().execute(sql);

我有一个问题,因为第二条语句中不存在该表:

表“tmp\u Table”不存在

我认为问题可能是连接池,因为临时表只能由一个连接访问,并且在连接关闭时会被删除。

这是我的数据源和txManager配置:

@Configuration
@EnableTransactionManagement
public class DBConfiguration {
    @Bean(destroyMethod = "close")
    public javax.sql.DataSource dataSource() {
        ...
    }

    @Bean
    public DataSourceTransactionManager txManager()
    {
        DataSourceTransactionManager tx= new DataSourceTransactionManager(dataSource());
        return tx;
    }
}

如何解决这个问题?我需要创建一个新的非池连接?

共有1个答案

索和璧
2023-03-14

我尝试的解决方案是使用SingleConnectionDataSource。

像这样。

 SingleConnectionDataSource scds = new SingleConnectionDataSource(jdbc.getDataSource().getConnection(), true);
 JdbcTemplate scdsjdbc = new JdbcTemplate(scds);
 
 scdsjdbc.execute("EXECUTE CREATE TEMPORARY TABLE QUERY!!");

 //file import with postgresql copy command. path is temporary file path.
 CopyManager cm = new CopyManager(scdsTmp.getDataSource().getConnection().unwrap(BaseConnection.class));
 cm.copyIn("copy tmp_tenant_product from STDIN with csv", new FileReader(path.toFile()));

 //result will be filled with the temporary table records
 List<Map<String, Object>> result = scdsTmp.queryForList("SELECT * FROM tmp_tenant_product");
 
 类似资料:
  • 问题内容: 我能够创建这样的MySQL连接: 但是我想启动一个池并在我的项目中使用它。 问题答案: 只是为了将来帮助某人,这对我有用: 我创建了一个包含池的mysql连接器文件: 稍后,您可以简单地将连接器包含在另一个文件中,让其称为manageDB.js: 并做了这样的可调用方法:

  • 我需要在火花中连接2个表。但是我首先过滤掉第二个表的一部分,而不是完全连接2个表: 我想在这种情况下使用广播连接。 Spark有一个参数,用于定义广播连接的最大表大小:: 配置在执行联接时将广播到所有工作节点的表的最大大小(以字节为单位)。通过将该值设置为-1,可以禁用广播。请注意,当前统计信息仅支持已运行命令ANALYZE TABLE COMPUTE statistics noscan的配置单元

  • 当我使用带有固定连接提供者的TCP客户端时,我不能重用连接。 他们使连接超过maxConnection变量。 这是我写的。 即使我使用10个maxConnection,比如“ConnectionProvider”。固定(“测试”,10)”,有22个空闲连接。天啊 //NettyClient.java //NettyClientTest。Java语言 14:55:27.397[reactor-tcp

  • 问题内容: 我创建SQL Server查询,并具有带有记录的普通表,另一方面具有带有记录的临时表,并且此表不为空,并且所有字段都没有任何要加入的冲突 是否可以加入这两个不同类型的表? 问题答案: 是否可以加入这两个不同类型的表?(正常和临时) 是的,可以联接不同类型的表(永久表和临时表)。连接这些表没有不同的语法。 例如 永久表: 临时表: 联接两个表: 看看这个SQLFiddle

  • 问题内容: 我已经用Java实现了一个非常简单的ConnectionPool。它没有花哨的功能,只有获取/释放连接方法。 我如何测试它是否正常工作? 我知道那里有很多准备使用的连接池,它们比我将要使用的要可靠得多,但是我只是在尝试练习以了解连接池的工作方式。 谢谢! 如果有帮助,下面是代码: 还有我的PooledConnection.java: 问题答案: 你可以测试一下 在池为空时获得连接将为您

  • (注意:是的,围绕这个主题有一些重复的问题。然而,这些问题是几年前的事了……当时谷歌应用引擎只支持JPA 1.0和专有的NoSQL数据存储。现在支持更现代的JPA标准和MySQL,值得再次访问。) 我正在谷歌应用引擎Java项目中尝试云SQL,使用JPA作为持久性框架。谷歌的常见问题是使用云SQL连接池有点矛盾...说如果创建新连接的成本超过检查和重用现有连接的成本,这可能是值得的。 我预计我的应