Импорт/Экспорт¶
Экспорт¶
Некоторые форматы данных поддерживаются ГИС «Аксиома» только на импорт и/или
экспорт. Не для всех форматом можно создать, открывать и редактировать данные,
используя транзакционную модель редактирования, являющуюся основной для ГИС «Аксиома».
Тем не менее экспорт и создание очень близки по назначению, поэтому они
объединены и представлены одним типом axipy.da.Destination
- назначение
объекта данных.
Так для некоторых типов экспорт axipy.da.Destination.export()
является
единственной возможностью вывода, в то время как для других - это дополнительная
возможность к имеющейся axipy.da.Destination.create_open()
в случаях,
когда открытие и редактирование не требуется.
Экспортировать можно отдельные записи, таблицы или целые источники данных.
# Открываем исходную таблицу
table_src = provider_manager.openfile(input_filepath)
# Формируем целевую и производим экспорт
destination = provider_manager.csv.get_destination(output_filepath, Schema())
destination.export_from_table(table_src, copy_schema=True)
Если требуется создать таблицу и занести в нее некоторую информацию, но при этом формат данных не поддерживается на изменение, эту проблему можно решить, используя временную таблицу как буфер. Т.е. формируем данные в памяти, а потом производим экспорт этой временной таблицы в нужный нам формат.
# Создаем временную таблицу
definition = {
'src': '',
'schema': attr.schema(
attr.integer('id'),
attr.string('name')
)
}
table_src = provider_manager.create(definition)
# Добавляем в нее записи
table_src.insert(Feature({'id': '1', 'name': 'Name1'}))
table_src.insert(Feature({'id': '2', 'name': 'Name2'}))
# Создаем целевую таблицу и производим экспорт
destination = provider_manager.csv.get_destination('outfile.csv', Schema())
destination.export_from_table(table_src, copy_schema=True)
Импорт¶
Источник данных axipy.da.Source
- это зеркальный тип назначения
объекта данных axipy.da.Destination
. Так же как для назначения,
некоторые типы данных поддерживают только импорт, и не могут быть напрямую
открыты с помощью axipy.da.Source.open
. А другие типы поддерживают
и открытие и импорт для случаев, когда открытие и редактирование не требуется.
source = provider_manager.tab.get_source(input_tabfile)
destination.export_from(source)
См.также
Чтобы узнать, какие типы поддерживают импорт и экспорт, обратитесь к
описанию конкретных провайдеров данных axipy.da.ProviderManager
.