我使用Postgis中loader_generate_script
提供的脚本来加载Tiger人口普查数据,并在加载EDGE数据时收到错误消息。我可以通过将-v ON_ERROR_EXIT=1
附加到所有psql
来电来找到错误。
NOTICE: INSERT INTO tiger_data.al_edges(statefp,countyfp,tlid,tfidl,tfidr,mtfcc,fullname,smid,lfromadd,ltoadd,rfromadd,rtoadd,zipl,zipr,featcat,hydroflg,railflg,roadflg,olfflg,passflg,divroad,exttyp,ttyp,deckedroad,artpath,persist,gcseflg,offsetl,offsetr,tnidf,tnidt,the_geom) SELECT statefp,countyfp,tlid,tfidl,tfidr,mtfcc,fullname,smid,lfromadd,ltoadd,rfromadd,rtoadd,zipl,zipr,featcat,hydroflg,railflg,roadflg,olfflg,passflg,exttyp,ttyp,deckedroad,artpath,persist,gcseflg,offsetl,offsetr,tnidf,tnidt,the_geom FROM tiger_staging.al_edges;
ERROR: INSERT has more target columns than expressions
LINE 1: ...tpath,persist,gcseflg,offsetl,offsetr,tnidf,tnidt,the_geom) ...
该错误非常清楚地表明列不匹配(SELECT
语句缺少名为divroad
的列。如何在shp2psql
中缓解这一点,因为这是INSERT
什么是创建{{1}}声明。感谢任何帮助!
答案 0 :(得分:1)
原来这个问题源于我的postgis版本。 Azure托管postgres使用POSTGIS="2.3.2 r15302"
作为Postgis扩展,看起来TIGER2017数据问题已在2.4.1
of postgis中修补。解决方案是升级Postgis,但这可能意味着暂时不使用Azure管理。