繁体   English   中英

使用Jdbc在Oracle上选择创建表创建没有行的表

[英]Create table as select on Oracle using Jdbc creates table with no rows

我正在尝试使用Spring的JdbcTemplate在Oracle 11g命令上执行CTAS。

private void ctasTest(JdbcTemplate jdbcTemplate) {
    String ctas = "CREATE TABLE TARGET_DATA NOLOGGING AS SELECT ID,
      NTILE(10) OVER (ORDER BY ID) AS CONTAINER_COLUMN FROM SOURCE_DATA";
    jdbcTemplate.execute(ctas);
}

在新数据库上运行时,将创建TARGET_DATA表,但是具有0行,即使SOURCE_DATA表具有1000行也是如此。

如果随后使用SQLDeveloper删除空的TARGET_DATA表并运行相同的命令,则该命令成功,并且该表包含1000行。

然后,我可以删除表并重新运行Java代码,它将成功执行,并且TARGET_DATA将包含1000行。

SQLDeveloper是否在后台提供我需要包含在Java代码中的内容? 我在纯JDBC和Oracle 12c上尝试了相同的方法,并获得了相同的结果。

试试这个作为您的陈述:

String ctas = "CREATE TABLE TARGET_DATA NOLOGGING AS (SELECT ID,
  NTILE(10) OVER (ORDER BY ID) AS CONTAINER_COLUMN FROM SOURCE_DATA)";

请注意,选择部分用括号括起来。

原来我还没有提交测试数据。 因此,它在SQLDeveloper会话中仍然可见,但对Java应用程序不可见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM