Derby SQL 语法错误:遇到“。”从一个数据库复制到另一个数据库时

Posted

技术标签:

【中文标题】Derby SQL 语法错误:遇到“。”从一个数据库复制到另一个数据库时【英文标题】:Derby SQL Syntax error: Encountered "." when copying from one database to another 【发布时间】:2015-01-26 17:02:08 【问题描述】:

我正在使用 Derby DB 并尝试将数据从一个数据库中的表复制到另一个数据库中具有相同表定义的表中。

在 Derby SQL 中指定 database.scheme.table 的正确语法是什么?

我尝试过使用以下 select 语句

statement = "INSERT INTO CH003..MHALL..CH_COMPANY SELECT * FROM CH001..MHALL..CH_COMPANY WHERE COMPANY_NUMBER = '" + companyNumber + "'";

但得到错误原因:java.sql.SQLException:语法错误:遇到“。”在第 1 行第 22 列。

把代码改成

 statement = "INSERT INTO CH003.MHALL.CH_COMPANY SELECT * FROM CH001.MHALL.CH_COMPANY WHERE COMPANY_NUMBER = '" + companyNumber + "'";

我收到错误 SQLSyntaxErrorException:语法错误:遇到“。”在第 1 行第 27 列。

在德比中可以做到这一点吗?你知道正确的语法吗? 感谢您的帮助。

【问题讨论】:

【参考方案1】:

一个 Derby JDBC 连接只连接到一个 Derby 数据库,所以这在您尝试的方式中是不可能的。

但是,您可以使用其他方法。

例如,您可以使用 SYSCS_UTIL.SYSCS_EXPORT_TABLE 将表中的数据导出到 CSV 文件中,然后您可以打开与目标数据库的连接并使用 SYSCS_UTIL.SYSCS_IMPORT_DATA 导入该数据。请参阅https://db.apache.org/derby/docs/10.11/ref/rrefexportproc.html 和http://db.apache.org/derby/docs/10.11/ref/rrefimportdataproc.html。

或者,您可以将这些数据读入 Java 程序中的数据结构(例如 ArrayList),然后打开与目标数据库的连接并将其写出。

或者,您可以使用 Apache DdlUtils 之类的工具将数据从一个表复制到另一个表:http://db.apache.org/derby/integrate/db_ddlutils.html

我确信还有其他可能性,但由于您没有提供有关您要实现的基本目标的大量背景信息,因此我不会试图推测为什么一种方法可能更好或更差比另一个。

【讨论】:

以上是关于Derby SQL 语法错误:遇到“。”从一个数据库复制到另一个数据库时的主要内容,如果未能解决你的问题,请参考以下文章

语法错误:在 DROP SEQUENCE 语句的 derby 中遇到“<EOF>”

如何从 ksh 脚本执行 Derby DB 的 SQL 脚本

Derby SQL 时间戳算术和 JDBC 转义语法

如何将数据从 Ms 访问迁移到 Derby 数据库或如何将数据从 My sql 迁移到 Derby 数据库

Derby 数据库连接问题

连接到 Derby 网络服务器时找不到数据库错误