Как слиться из SpatialLite в PostGIS? - PullRequest
0 голосов
/ 10 октября 2018

Как я могу объединить базу данных SpatiaLite с базой данных PostGIS?

Я попытался использовать pgloader со следующей командой:

pgloader db.sqlite3 postgresql:///mydb

Но она не работает.(Я думаю, это не поддерживается).Пожалуйста, смотрите вывод ошибки:

KABOOM!
FATAL error: Could not prepare an sqlite statement.
Code ERROR: no such module: VirtualSpatialIndex.
Database: /tmp/db.sqlite3
SQL: PRAGMA table_info(`SpatialIndex`)

An unhandled error condition has been signalled:
   Could not prepare an sqlite statement.
Code ERROR: no such module: VirtualSpatialIndex.
Database: /tmp/db.sqlite3
SQL: PRAGMA table_info(`SpatialIndex`)




FATAL: Failed to start the monitor thread.

error opening #P"/tmp/pgloader/pgloader.log": Permission denied

Я использую в SpatialLite только простое поле POINT.Ничего другого от SpatialLite.(Со значениями широты / долготы)

EDIT1: @ Corion

Если я попытаюсь поступить так, я не получу ошибки при этом:

pgloader --before load_spatialite.sql db.sqlite3

Но загрузка его в PostGIS с помощью этой команды:

pgloader --before load_spatialite.sql db.sqlite3 postgresql:///mydb

выдает мне следующее сообщение об ошибке:

2018-10-10T11:29:16.056000Z ERROR Database error 42883: function load_extension(unknown) does not exist
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT load_extension('mod_spatialite')
KABOOM!
FATAL error: Database error 42883: function load_extension(unknown) does not exist
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT load_extension('mod_spatialite')
An unhandled error condition has been signalled:
   Database error 42883: function load_extension(unknown) does not exist
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT load_extension('mod_spatialite')




What I am doing here?

Database error 42883: function load_extension(unknown) does not exist
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT load_extension('mod_spatialite')

В чем здесь проблема?

1 Ответ

0 голосов
/ 10 октября 2018

SpatiaLite - это расширение, встроенное в SQLite.Вам понадобится двоичный файл / библиотека SQLite, который построен со статически связанным SpatiaLite или загрузите динамическое расширение SpatiaLite (см. Ссылку) при импорте.

Начиная с pgloader manpage , онкажется, что вы можете добавить команды SQL для загрузки расширения SpatiaLite в SQLite следующим образом:

pgloader --before load_spatialite.sql  /tmp/db.sqlite3

и load_spatialite.sql содержит

SELECT load_extension('mod_spatialite');

Вы можете или не должны устанавливать дополнительныепеременные среды, такие, что для вашего процесса найдены динамические библиотеки.

...