Якщо ваш вихідний набір даних не надто великий (наприклад, може вміститися в оперативній пам'яті без виникнення помилки out of memory), є кілька рекомендацій як зробити це оптимально.
По-перше, намагайтеся використовувати запит SQL замість об'єкту Таблиця де тільки можливо. Якщо ви новачок в SQL, і вам необхідно експортувати лише одну таблицю, ваш SQL досить простий: select * from <table_name>, де <table_name> - назва таблиці, з якої експортувати дані.
По-друге, якщо вихідна база даних є віддаленою (не розміщена на вашому комп'ютері), завантажте (fetch) всі записи перед експортом. Завантажені записи розміщуються у вашій локальній оперативній пам'яті, тому процес експорту не буде контактувати з сервером і виконуватиметься значно швидше. Знову ж таки, не забувайте: ми говоримо про набори даних середнього розміру.
Експорт середніх наборів даних з GUI
- Відкрийте вихідну базу даних.
- Клацніть кнопку Створити вікно SQL. З'явиться нове вікно SQL.
- В редакторі SQL напишіть текст вашого запиту SQL і клікніть кнопку Виконати запит.
- Клікніть кнопку Останній запис над таблицею для завантаження всіх даних.
- Клікніть кнопку Експорт даних.
- Виберіть цільовий формат експорту.
- Вкажіть необхідні налаштування експорту. Якщо цільовий формат - База даних, не забудьте увімкнути опцію Режим економії пам'яті та пов'язані з нею опції (якщо доступні); вкажіть коректний режим експорту.
- Клікніть Експортувати.
Експорт середніх наборів даних з командного рядка
- Збережіть ваш запит SQL до файлу.
- Побудуйте ваш командний рядок вручну за допомогою документації або з GUI, вибравшти меню Інструменти | Генерація командного рядка | Експорт / Імпорт даних....
- Створіть файл типу .bat і запишіть до нього створений командний рядок. Або використайте командний рядок в іншому середовищі за вашим вибором.
Приклад командного рядка для експорту даних з віддаленої бази PostgreSQL до локального файлу SQLite:
dbtour.exe /silent /export /ExportType=DATABASE /ExportMode=REPLACE+INSERT /CommitInterval=1000 /MemorySaving /UseSQLParameters /UseBatchMode /SrcDBInterface=fd /SrcDBKind=DSN /SrcDBDriver=POSTGRESQL /SrcDB=dwh /SrcServer=MyPgServer /SrcPort=5432 /SrcVendorLibrary=C:\Program Files (x86)\PostgreSQL\9.6\bin\libpq.dll /SrcDBUserName=servicedesk /SrcDBPassword=ant2%trH% /SrcSQLFile=c:\MyExportLib\DWH\SelectContracts.sql /TrgDBInterface=fd /TrgDBKind=FILE /TrgDBDriver=SQLITE /TrgTableName=contracts /TrgDB=C:\db\DWHCopy.db /CreateTargetContainer
В кінці розділу наведено опис всіх використаних параметрів командного рядка.
Експорт середніх наборів даних з використанням файла операцій
Рекомендується використовувати файли операцій замість класичних командних рядків із-за наступних переваг:
- Файли операцій більш читабельні
- Файли операцій дозволяють коментарі
- Якщо командний рядок містить елементи, схожі на змінні середовища, але такими не є (як, наприклад, параметр /SrcDBPassword в команді вище), файли операцій не дадуть Windows їх розширити і спотворити командний рядок
- Файли операцій можна виконувати як із GUI, так і з командного рядка
Перепишемо командний рядок вище до файлу операцій (зверніть увагу, що параметр /silent не повинен увійти до файлу операцій):
;Exporting from data warehouse to local SQLite db
/export
/ExportType=DATABASE
/ExportMode=REPLACE+INSERT
/CommitInterval=1000
/MemorySaving
/UseSQLParameters
/UseBatchMode
;source database:
/SrcDBInterface=fd
/SrcDBKind=DSN
/SrcDBDriver=POSTGRESQL
/SrcDB=dwh
/SrcServer=MyPgServer
/SrcPort=5432
/SrcVendorLibrary=C:\Program Files (x86)\PostgreSQL\9.6\bin\libpq.dll
/SrcDBUserName=servicedesk
/SrcDBPassword=ant2%trH%
/SrcSQLFile=c:\MyExportLib\DWH\SelectContracts.sql
;target database:
/TrgDBInterface=fd
/TrgDBKind=FILE
/TrgDBDriver=SQLITE
/TrgTableName=contracts
/TrgDB=C:\db\DWHCopy.db
/CreateTargetContainer
Збережемо файл як c:\MyExportLib\DWH\SelectContracts.txt. Тепер його можна виконати із GUI (меню База | Відкрити | Файл операцій) або з командного рядка:
dbtour.exe /silent /ActionFile=c:\MyExportLib\DWH\SelectContracts.txt
Нарешті, опишемо використані параметри командного рядка:
/silent
Вказує програмі виконати операцію в 'тихому' режимі (без будь-яких вікон)
/export
Вказує програмі виконати експорт даних
/ExportType=DATABASE
Вказує цільовий формат експорту
/ExportMode=REPLACE+INSERT
Цільову таблицю буде перестворено, якщо вона існує
/CommitInterval=1000
Команда commit буде генеруватися після експорту кожних 1000 записів
/MemorySaving
Експорт буде відбуватися без відкриття цільової таблиці
/UseSQLParameters
Для пришвидшення виконання будуть використовуватися параметри SQL
/UseBatchMode
Для пришвидшення виконання команди SQL будуть об'єднуватися в пакети; розмір кожного пакету залежить від /CommitInterval
/SrcDBInterface=fd
Під'єднання до вихідної бази даних здійснюватиметься движком FD
/SrcDBKind=DSN
Вид вихідної бази не файл, не тека, не рядок підключення, тому використовуємо DSN
/SrcDBDriver=POSTGRESQL
Тип вихідної бази даних - PostgreSQL
/SrcDB=dwh
Поточним каталогом PostgreSQL буде dwh
/SrcServer=MyPgServer
Вказує сервер вихідної бази даних
/SrcPort=5432
Вказує порт вихідної бази даних
/SrcVendorLibrary=C:\Program Files (x86)\PostgreSQL\9.6\bin\libpq.dll
Вказує бібліотеку, через яку необхідно працювати з вихідною базою даних; в більшості випадків програма може відшукати її самостійно
/SrcDBUserName=servicedesk
Під'єднання до вихідної бази даних здійснюватиметься користувачем servicedesk
/SrcDBPassword=ant2%trH%
Вказує пароль користувача для під'єднання до вихідної бази даних
/SrcSQLFile=c:\MyExportLib\DWH\SelectContracts.sql
Вказує шлях до файла SQL із запитом до вихідної бази даних
/TrgDBInterface=fd
Під'єднання до цільової бази даних здійснюватиметься движком FD
/TrgDBKind=FILE
Вид цільової бази - файл
/TrgDBDriver=SQLITE
Тип цільової бази даних - SQLite
/TrgTableName=contracts
Назва цільової таблиці - contracts
/TrgDB=C:\db\DWHCopy.db
Вказує шлях до цільової бази даних
/CreateTargetContainer
Вказує програмі створити цільовий файл бази даних, якщо він ще не існує
Див. також