1

次のように 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 列のデータが含まれています。

4

1 に答える 1