[英]How to insert rows dynamically from a select query to another table in java?
[英]Java code to insert data into a table by retrieving the result from another query
我有 sql 查询,如果我必须在 sql 命令行或 IDE 中手动运行它,它运行良好。 但是我必须将其转换为 java 代码,并且查询在 java 中不起作用。 Sql查询-
"INSERT INTO table_1(column1, column2,column3, column4, column5)
SELECT DISTINCT s.computedmetric_name AS metric_name, s.display_name, FALSE
AS is_generated,FALSE AS is_manually_marked_for_deletion, FALSE AS
is_data_marked_for_deletion FROM db_computedmetrics_temp AS s WHERE
s.computedmetric_name IS NOT NULL AND s.display_name IS NOT NULL AND NOT
EXISTS (SELECT 1 FROM db_metrics AS t WHERE t.metric_name =
s.computedmetric_name)"
我正在尝试使用以下 java 代码
String sql="Above mentioned sql query directly into this string";
Statement stmt = sqliteDBConnection.createStatement();
stmt.executeUpdate(sql);
但是在运行代码时,我收到异常说 -
Exception in thread "main" org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such column: FALSE)
请注意,较早的 sql 是为 postgres DB 编写的,而 Java 代码正在连接到 sqllite db。 请帮助我将 sql 转换为与 java 一起使用。 谢谢!
SQLite 不支持TRUE
和FALSE
作为关键字
SQLite 没有单独的布尔存储类。 相反,布尔值存储为整数 0 (false) 和 1 (true)。
http://www.sqlite.org/datatype3.html
所以你必须将你的查询更改为这样的
INSERT INTO table_1(column1, column2,column3, column4, column5)
SELECT DISTINCT s.computedmetric_name AS metric_name, s.display_name, 0
AS is_generated,0 AS is_manually_marked_for_deletion, 0 AS
is_data_marked_for_deletion FROM db_computedmetrics_temp AS s WHERE
s.computedmetric_name IS NOT NULL AND s.display_name IS NOT NULL AND NOT
EXISTS (SELECT 1 FROM db_metrics AS t WHERE t.metric_name =
s.computedmetric_name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.