我正在尝试导入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个字段(最后一个字段假定为空/空)。
我可以轻松强制SQLite3将缺少的导入字段视为空/空吗?
我意识到我可以写一个Perl脚本等,但我很好奇是否可以 纯粹在SQLite中完成?
请注意,“.bail OFF”和设置缺失字段的默认值都不起作用。
编辑:我仍然对答案感到好奇,但事实证明这是一个红色的鲱鱼:第374993行包含一个引号,它(正确地)抛出sqlite3导入(参见sqlite3 import with quotes)。但是,所有行都包含19列数据。答案 0 :(得分:0)
如果您删除两个字符“和”字符'或完全删除它们,它将起作用。您需要为整个文件执行此操作。
这在一些其他geoname数据库文件中也很普遍。我这样做了,但改变sqlite中的一些设置也可以完成这项工作。
注意:第二个字符是utf-8字符,因此最好从此处复制粘贴。