Модуль экспорта/импорта данных

Материал из Course Orchestra
Перейти к: навигация, поиск
Внимание! Вы просматриваете документацию к Celesta 6.x. Документация по Celesta 7.x доступна на courseorchestra.github.io/celesta.

1. Справочник Celesta

1.1 Введение и основные понятия
1.2 Запуск и авто-обновление
1.3 Базовая настройка
1.4 Системные таблицы
1.5 CelestaSQL
1.6 CelestaDoc
1.7 Контексты сессии и вызова
1.8 Курсоры
1.9 BLOB-поля
1.10 Option-поля
1.11 Защита от потерянных обновлений
1.12 Метаданные Celesta
1.13 CelestaUnit

2. Celesta и базы данных

2.1 Особенности работы Celesta с поддерживаемыми типами СУБД
2.2 Проектирование базы данных Celesta в DBSchema

3. Создание решений с использованием Celesta для ShowCase

3.1 Программа обучения Celesta
3.2 Подготовка рабочего места для работы с Celesta
3.2.1 Для разработчиков платформы
3.2.2 Для разработчиков решений
3.3 Системные гранулы Celesta
3.3.1 common
3.3.1.1 Экспорт/импорт данных
3.3.1.2 Навигатор
3.3.1.3 Серии номеров
3.3.1.4 Иерархия Дьюи
3.3.1.5 Системные функции
3.3.1.6 Реестр настроек
3.3.1.7 Mailsender
3.3.1.8 Common.filter
3.3.2 common.api
3.3.4 security
3.3.3 lyra
3.4 Стандартные гранулы Celesta
3.4.1 dirusing
3.4.2 workflow
3.4.3 File repository
3.5 Отрисовка элементов Showcase при помощи Celesta
3.5.1 Конвертер XML-JSON
3.5.2 Навигатор (Navigator)
3.5.3 Информационная панель (Datapanel)
3.5.4 Серверное действие (Server activity)
3.5.5 Вебтекст (WebText)
3.5.6 Грид (Grid)
3.5.6.1 Панель инструментов (ToolBar)
3.5.7 XForms
3.5.7.1 Селекторы
3.5.7.2 Submission
3.5.7.3 Загрузка/Выгрузка файлов (Upload/Download)

5. Решение проблем

5.1 Проблемы с кодировкой jython-файлов

Описание

Модуль common.dbutils содержит класс позволяющий производить импорт и экспорт из базы данных в xml файл. В частности данный модуль удобно использовать для первоначального заполнения справочников а также для переноса данных или вывода их на печать. Xml файл должен иметь следующий формат(в дальнейшем возможно будет разработана отдельная xsd-схема)

<?xml version="1.0" encoding="UTF-8"?>
<table name="Имя таблицы">
	<row>
		<field name="Имя поля1">Значение поля</field>
		<field name="Имя поля2">Информация</field>
		...
	</row>
        ...
	<row>
		<field name="Имя поля3">2.1122</field>
		<field name="Имя поля2">Представление</field>	
	        ...
	</row>
        <row>
		<field name="Имя поля4" encoding="base64">
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0
aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1
c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0
aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdl
LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
                </field>
			
	        ...
	</row>
</table>
  • table - тэг содержащий имя таблицы, аналогично имени таблицы в базе данных
    • @name - имя таблицы
  • row - соответствует строке таблицы
  • field - поле таблицы
    • @name- имя поля
    • @encoding - кодировка, возможны 2 варианта ("utf8","base64")

Кодировка "base64"[1] необходима только для передачи и получения данных типа BLOB. В BLOB поле можно передать и текст в кодировке utf8, при этом при получении данных из BLOB поля вы всегда будете получать данные в кодировке base64. Для конвертации строки или файла в кодировку base64 можно воспользоваться бесплатными online конвертерами. При загрузке данных в базу указывать все столбцы не обязательно, необходимым условием является наличие первичного ключа.

Примеры использования

Пример загрузки данных в базу при помощи модуля common.dbutils

from common.dbutils import DataBaseXMLExchange
from java.io import FileOutputStream, FileInputStream
from grain1._grain1_orm import tableInstanceCursor

tableInstance = tableInstanceCursor(context)        
dataStream = FileInputStream("С:/tableInstance.xml")

exchange = DataBaseXMLExchange(dataStream, tableInstance)
exchange.uploadXML()
dataStream.close()

В функцию exchange.uploadXML() можно опционально передать параметр, отвечающий за то, что именно нужно делать с записями из таблицы. Доступные значения параметра:

  • i - записи только вставляются в таблицу, уже существующие записи не изменяются. Удобно использовать для серий номеров
  • u - изменяются только существующие записи. Новые записи не вставляются
  • ui - если запись уже существует, ее данные обновляются. Если записи нет - данные вставляются.

По умолчанию берется параметр ui

Пример получения данных из базы при помощи модуля common.dbutils

from common.dbutils import DataBaseXMLExchange
from java.io import FileOutputStream, FileInputStream
from grain1._grain1_orm import tableInstanceCursor

tableInstance = tableInstanceCursor(context)        
dataStream= FileOutputStream("С:/tableInstance.xml")

exchange = DataBaseXMLExchange(dataStream, tableInstance)
exchange.downloadXML()
dataStream.close()