1

FTS インデックスを使用して SQLite テーブルに入る 24,888 のレコードがあります。コンマ区切りの .csv ファイルのセットから .import を使用してテーブルをロードします。

プラットフォームは Linux - CentOS 6.2 で、このディストリビューションでサポートされているバージョンは SQLite 3.6.20 です。

これはすべて、 FTS 3 を使用して検索システムを構築することで機能しています (Apache と PHP を使用)。

FTS 4 の機能を取得するために (必要な統計を使用して)、最近手動で最新の SQLite 3.7.13 に更新しました。

残念ながら、.csv からインポートすると、FTS 3 テーブルまたは FTS 4 テーブルのどちらであるかに関係なく、半分以上の行/レコードが欠落しています。24,888 ではなく 12,224 しか取得できません。

インポート中に報告されたエラーはありません。

データの最後の列は (一部のレコードでは) 大量のテキストであり、場合によっては最大 200K ~ 300K になります。テキストには、カーリー二重引用符や m-dash または n-dash などの文字がまだいくつかあります。

.immport コードに何かがファイルの終わりのように見える可能性はありますか?

ワード カウント ユーティリティ 'wc -l' は、24,888 行すべてを表示します。

最後のポイントとして、.csv ファイルは Linux システム上で実行されている Python 2.6.6 を使用して作成され、元の改行は (|| に) エスケープされているため、キャリッジ コントロールと改行は統一されていると思います。SQLite 3.6 では無視されているが、3.7 では認識されている改行文字または改行文字が欠落しているのかもしれません。

FTS 4 の追加機能が本当に必要ですが (主に、matchinfo を使用して検索結果に関する統計をレポートするため)、すべてのデータを読み込めないとダメです!

ありがとう、 ローレンス・ブレバード カリフォルニア州サンノゼ

[keywords2@keywords2c6x64 grant-import-tools]$ /usr/local/bin/sqlite3.7 --version
3.7.13 2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc

[keywords2@keywords2c6x64 grant-import-tools]$ /usr/bin/sqlite3 --version
3.6.20

[keywords2@keywords2c6x64 grant-import-tools]$ uname -a
Linux keywords2c6x64 2.6.32-220.23.1.el6.x86_64 #1 SMP Mon Jun 18 18:58:52 BST 2012 x86_64 x86_64 x86_64 GNU/Linux

[keywords2@keywords2c6x64 grant-import-tools]$ cat /etc/redhat-release 
CentOS release 6.2 (Final)
4

2 に答える 2

1

私は私のものを修正しました。

どうやら二重引用符は、コンマ区切りのファイルでは異なる方法で処理されるようになりました。元のソースでそれらを2つの一重引用符にエスケープしました。その後、すべての行が問題なくインポートされます。

フィールドに二重引用符が含まれると、次の二重引用符までのすべてが単一フィールドとして扱われるようです。私は推測する。

これは、3.7.7以降と3.7.12以降では明らかに異なる動作です。

于 2012-09-11T23:28:21.493 に答える
0

同じ経験を確認できます-大きなCSV(〜700万行)をインポートすると、3.7では約100万行が失われますが、3.6では失われません

于 2012-09-10T22:17:54.850 に答える