[英]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.