1

尝试简单的方法:

sqlite2 mydb.db .dump | sqlite3 mydb-new.db

我收到了这个错误:

第 84802 行附近的 SQL 错误:没有这样的列:D

在该行中,脚本是这样的:

插入车辆值(127548,'21K0065217', Ñ ,'PA007808',65217,279,1989,3,468,'1998-07-30 00:00:00.000000','14/697/98-07',2, '',1);

我的猜测是没有引号的 'Ñ' 是问题所在

任何的想法?

PD:我现在在 Windows 下,我想使用命令行以便它可以自动化(这个过程将由服务器每天完成)。

4

4 回答 4

2

只需使用 sqlite3 二进制 CLI 打开 v2 数据库,然后保存即可。数据库文件将透明地迁移到 v3。

$ sqlite3 v2database.db
sqlite> .quit
$

注意:您可能需要在退出之前插入/删除一行以强制更新。

于 2009-02-14T01:25:40.753 回答
1

好吧,没有人回答...最后我修改了我的原始脚本(首先创建了 sqlite2 数据库的那个)以直接在 sqlite3 中创建数据库。

我认为一个大的字符串处理脚本(大,因为 mi 数据库分别为 800mb 和 200mb)可以完成这项工作,但直接生成数据库对我来说更容易。

于 2008-09-19T02:44:02.830 回答
1

只需使用 sqlite3 二进制 CLI 打开 v2 数据库,然后保存即可。数据库文件将透明地迁移到 v3。

它不起作用。

$sqlite3 db2
SQLite version 3.6.16
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
Error: file is encrypted or is not a database
sqlite> .q

并且文件没有改变(显然 sqlite3 无法读取它)。我认为最初的问题是 sqlite2 中的一个错误。

于 2009-07-28T09:57:00.880 回答
0

我试图在没有 Windows 干预的情况下做到这一点:

*通过在 old.db 上调用 sqlite2,并将转储直接发送到文件

*然后在 new.db 上调用 sqlite3 并直接从文件加载转储。

以防万一 windows 弄乱了命令行上的字符。

结果相同。

于 2008-09-18T18:24:49.473 回答