Пакетне завантаження декількох файлів на Postgis


11

Відповідно до shp2pgsqlдовідки, варіанти, які випадають , додають , створюють та готуються, є взаємовиключними. Отже, якщо я хочу створити таблицю з фігури, а потім додати кілька інших файлів форм, я роблю щось на зразок наступного, зберігаючи лічильник, щоб вказати, ми перебуваємо в режимі створення чи додавання.

cnt=0
for shp in $(ls *.shp); do

if [ $cnt -eq  0 ]  ; then

   shp2pgsql -s 27700 -c $shp schema.table_name | psql -h localhost db 

else

   shp2pgsql -s 27700 -a $shp schema.table_name | psql -h localhost db 

fi
((cnt++))
done

Це працює, як очікувалося, але я часто замислювався, чи є простіший спосіб?

Відповіді:


4

Якщо ви можете використовувати ogr2ogr, він ігнорує параметри створення під час додавання та ігнорує параметри додавання при створенні.

for shp in $(ls *.shp);
do
  ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -a_srs 27700 -nln schema.table_name $shp
done

Або у вікнах командного рядка:

for /R %f in (*.shp) do ogr2ogr -f "PostgreSQL" PG:dbname=databasename -append -nln schema.table_name "%f"

1
Звичайно, працює ogr2ogr. Зрозуміло, що буде просте рішення. Спасибі
Джон Пауелл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.