如何让SQLite导入短线?

时间:2013-09-29 04:57:14

标签: sqlite

我正在尝试导入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列数据。

1 个答案:

答案 0 :(得分:0)

如果您删除两个字符“和”字符'或完全删除它们,它将起作用。您需要为整个文件执行此操作。

这在一些其他geoname数据库文件中也很普遍。我这样做了,但改变sqlite中的一些设置也可以完成这项工作。

注意:第二个字符是utf-8字符,因此最好从此处复制粘贴。