1

簡単なアプローチを試す:

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

このエラーが発生しました:

行 84802 付近の SQL エラー: そのような列はありません: -

その行のスクリプトは次のとおりです。

INSERT INTO vehiculo VALUES(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 に答える