Kexi/Підручники/Імпортування бази даних SQLite до Kexi

    From KDE UserBase Wiki
    This page is a translated version of the page Kexi/Tutorials/Importing SQLite database into Kexi and the translation is 100% complete.
    Other languages:

    Зауваження

    Цим підручником можна скористатися для роботи з Kexi 2.x та новішими версіями. Автором підручника є Jarosław Staniek (обговорення).


    Підручник було створено для задоволення запиту щодо допомоги на форумі Kexi. Будемо раді будь-яким коментарям у відповідній гілці обговорення.

    Зауваження: існує і альтернативний підхід: https://forum.kde.org/viewtopic.php?f=220&t=139243

    Вступ

    За допомогою цього підручника ви зможете ознайомитися з процедурою перетворення файла вхідних даних, oaklandweather.sdb, у стандартному форматі SQLite3 з однією таблицею даних і створити проект бази даних, яким можна буде скористатися за допомогою Kexi.

    Файл вхідних даних SQLite3 можна отримати звідси (стиснуто до 600 кБ за допомогою xz, містить загальнодоступні дані).

    Кроки

    1. У вікні емулятора термінала Konsole скористайтеся консольною програмою sqlite3 для перегляду схеми (програма з графічним інтерфейсом, Sqliteman, не здатна показувати схеми):

    sqlite3 oaklandweather.sdb
    

    2. Далі, введіть команду:

    .schema
    

    3. У відповідь буде показано схему для однієї таблиці archive:

    CREATE TABLE archive (
       dateTime INTEGER NOT NULL UNIQUE PRIMARY KEY,
       usUnits INTEGER NOT NULL,
       interval INTEGER NOT NULL,
       barometer REAL,
       pressure REAL,
       altimeter REAL,
       inTemp REAL,
       outTemp REAL,
       inHumidity REAL,
       outHumidity REAL,
       windSpeed REAL,
       windDir REAL,
       windGust REAL,
       windGustDir REAL,
       rainRate REAL,
       rain REAL,
       dewpoint REAL,
       windchill REAL,
       heatindex REAL,
       ET REAL,
       radiation REAL,
       UV REAL,
       extraTemp1 REAL,
       extraTemp2 REAL,
       extraTemp3 REAL,
       soilTemp1 REAL,
       soilTemp2 REAL,
       soilTemp3 REAL,
       soilTemp4 REAL,
       leafTemp1 REAL,
       leafTemp2 REAL,
       extraHumid1 REAL,
       extraHumid2 REAL,
       soilMoist1 REAL,
       soilMoist2 REAL,
       soilMoist3 REAL,
       soilMoist4 REAL,
       leafWet1 REAL,
       leafWet2 REAL,
       rxCheckPercent REAL,
       txBatteryStatus REAL,
       consBatteryVoltage REAL,
       hail REAL,
       hailRate REAL,
       heatingTemp REAL,
       heatingVoltage REAL,
       supplyVoltage REAL,
       referenceVoltage REAL,
       windBatteryStatus REAL,
       rainBatteryStatus REAL,
       outTempBatteryStatus REAL,
       inTempBatteryStatus REAL
    );
    

    4. Цю таблицю слід відтворити вручну за допомогою Kexi так, щоб вона якомога точніше збігалася з початковою таблицею. На жаль, іншого способу немає — це доволі велика таблиця.

    Для цього вам слід створити новий порожній проект бази даних за допомогою Kexi. Надайте проектові назву oaklandweather, щоб файл проекту Kexi називався oaklandweather.kexi. Не закривайте вікна проекту Kexi.

    5. У проекті oaklandweather.kexi розпочніть створення нової таблиці.

    • Введіть назву кожного зі стовпчиків зі схеми, наданої на кроці 3.
    • Скористайтеся редактором властивостей, панель якого розташовано праворуч, щоб визначити для кожного зі стовпчиків у цій таблиці відповідний тип даних.
      • Для типів INTEGER, наприклад dateTime INTEGER у нашій схемі, виберіть тип «Ціле число» у полі «Тип даних» на панелі Дизайнера таблиць.
      • Для типів REAL, наприклад barometer REAL у нашій схемі, виберіть тип «Число з рухомою комою» у полі «Тип даних» стовпчика на панелі Дизайнера таблиць.
    • Крім того, встановіть стовпчик dateTime як основний стовпчик ключа для таблиці на панелі Редактора властивостей.
    • Також для стовпчиків usUnits та interval має бути призначено специфікацію NOT NULL. Щоб призначити цю специфікацію у Kexi, встановіть властивість «Обов'язкова» у значення «Так»для цих стовпчиків на панелі Редактора властивостей.


    Зауваження

    Підказка: у Linux ви можете скопіювати назви стовпчиків трохи швидше, якщо двічі клацнете на назві у схемі таблиці, наведеній вище, двічі клаценет на наступній порожній комірці у стовпчику «Заголовок поля» на панелі дизайнера таблиць, а потім клацнете середньою кнопкою (коліщатком), щоб вставити раніше позначений текстовий фрагмент.


    Зауваження

    У Kexi таблицю можна створити за допомогою текстового редактора та команди SQL, але цей спосіб може бути зручнішим лише для досвідчених користувачів. Якщо ви цікавитеся цим питанням, будь ласка, повідомте про це на сторінці обговорення.


    6. Збережіть компонування таблиці із заголовком Archive. Назву фізичної таблиці буде визначено у Kexi як archive, що відповідає назві тбалиці у файлі oaklandweather.sdb.

    Зауважте, що після збереження компонування ви знову можете відкрити його для редагування. Єдиною проблемою може бути те, що після збереження зміненого компонування таблиці ви втратите усі дані у ній, якщо такі були. Тому варто переконатися, що компонування таблиці є ідеальним, перш ніж вставляти будь-які дані до таблиці.

    Переконайтеся, що вставлено усі 52 стовпчики у компонуванні таблиці archive, і що усі ці дані правильно впорядковано і пов'язано із належним типом. Будь-які помилки можуть призвести до того, що таблиця archive буде непрацездатною у Kexi.

    Щойно усі описані дії буде виконано, ви можете закрити вікно програми Kexi.

    Файл Kexi без даних, для порівняння, можна отримати тут.

    7. Поки у файлі oaklandweather.kexi немає даних. Але ми готові виконати останню команду для імпортування даних. У емуляторі термінала Konsole перейдіть до каталогу, де зберігаються файли oaklandweather.sdb та oaklandweather.kexi або вкажіть належні шляхи до цих файлів. Далі, введіть (або вставте) таку команду:

    sqlite3 oaklandweather.sdb .dump | egrep -e "^(BEGIN|INSERT|ANALYZE|COMMIT)" | sqlite3 oaklandweather.kexi
    

    Це працює ось так:

    • Створює звіт з файла oaklandweather.kexi у так званому форматі дампу SQL (текстовому представленні) за допомогою консольної програми sqlite3.
    • Вилучає з цього дампу будь-які рядки, які починаються з BEGIN, INSERT, ANALYZE або COMMIT. Цю дію слід виконати, оскільки нам слід отримтаи лише дані у таблиці, а не створити нову таблицю.
    • Спрямовує виведені дані до консольної програми sqlite3 ще раз. Програма отримує усі команди з виведених даних і застосовує їх до файла бази даних oaklandweather.kexi. Останньою застосованою командою є COMMIT.


    8. Готово! Ви можете відкрити файл проекту бази даних oaklandweather.kexi у Kexi, відкрити таблицю 'archive' і бачити усі дані.


    Файл-результат роботи Kexi можна отримати тут (стиснено до 650 кБ за допомогою xz).