我正在使用 sqlite4java 来处理 sqlite db。我现在想将一个表从数据库复制到 dbtest。所以我在stackoverflow上找到了代码。但我总是得到一个错误。首先,我打开与新创建的数据库的连接,然后使用以下命令附加另一个数据库:
ATTACH DATABASE 数据库 AS 数据库;
这工作正常。dbtest 已作为新数据库打开。然后我想复制表:因此,表已经创建并且与其他数据库中的相同。
INSERT INTO dbtest.Routing (id, source, destination, metadata, zone_src, zone_dst,cost) SELECT * FROM database.Routing;
但执行此操作后,我收到错误:
com.almworks.sqlite4java.SQLiteException:[1] DB[1] exec() 没有这样的表:dbtest.Routing
我也使用 sqlite Studio 进行了尝试,它可以正常工作,但我无法在此处附加数据库(这是自动完成的)。我是否必须使用另一种表示法才能使用两个数据库?
编辑:我现在使用 CL 的答案。但这导致了新的问题:
com.almworks.sqlite4java.SQLiteException:[1] DB[1] exec() 没有这样的表:second.Routing
我改变了什么?
ATTACH DATABASE 数据库作为第二个;//数据库文件的新名称,它将作为第二个附加,因为如果我使用调试功能,它会说:数据库第二个已经在使用中。
如果我使用这个命令,我会得到上面提到的错误。
INSERT INTO Routing (id, source, destination, metadata, zone_src, zone_dst,cost) SELECT * FROM second.Routing;
通过使用数据库文件的绝对路径解决了问题。