我正在尝试导入地名数据库(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 个(最后一个字段假定为空白/空)。
我可以轻松地强制 SQLite3 将缺少的导入字段视为空白/空吗?
我意识到我可以编写 Perl 脚本等,但我很好奇这是否可以纯粹在 SQLite 中完成?
请注意,“.bail OFF”和为缺少的字段设置默认值都不起作用。
编辑:我仍然对答案感到好奇,但事实证明这是一条红鲱鱼:第 374993 行包含一个引号,它(正确地)抛出 sqlite3 import 关闭(参见sqlite3 import with quotes)。但是,所有行都包含 19 列数据。