次のように geonames データベース ( http://download.geonames.org/export/dump/特に解凍された allCountries.zip ファイル) をインポートしようとしています。
-- yet another attempt to create geonames "quickly" wo a perl script
CREATE TABLE geonames (
geonameid,
name,
asciiname,
alternatenames,
latitude,
longitude,
featureclass,
featurecode,
countrycode,
cc2,
admin1code,
admin2code,
admin3code,
admin4code,
population,
elevation,
dem,
timezone,
modificationdate DEFAULT ''
);
.bail OFF
.separator "\t"
.import allCountries.txt geonames
次のエラーが表示されます。
エラー: allCountries.txt 行 374993: 19 列のデータが予期されていましたが、18 列が見つかりました
エラーを理解しました: allCountries.txt の一部の行に 19 未満のフィールドが含まれています (最後のフィールドは空白/null と見なされます)。
不足しているインポート フィールドを空白/null として扱うように SQLite3 に強制することは簡単にできますか?
Perlスクリプトなどを書くことができることはわかっていますが、これが純粋にSQLiteでできるかどうか知りたいですか?
「.bail OFF」も、欠落しているフィールドのデフォルト設定も機能しないことに注意してください。
編集:私はまだ答えに興味がありますが、これは赤いニシンであることがわかりました:行 374993 には引用符が含まれており、(正しく) sqlite3 インポートをオフにします ( sqlite3 import with quotesを参照)。ただし、すべての行には 19 列のデータが含まれています。