UBOS Community

Daniel
Daniel

Posted on • Updated on

Додаємо данні .csv файлу в postgresql

Щоб не додавати дані самостійно, ми можемо взяти готовий файл з даними(.csv), та імпортувати це в нашу таблицю.

NodeRed

На початку, в середовищі NodeRed, встановлюємо пакет під назвою "node-red-contrib-re-postgres". Надалі, потрібно створити такі вузли: http-in > function > base64 > function > csv > function > postgres(з'являється в наслідок завантаженого пакету) > http-response.
Image description

  • В http-in вибираємо метод POST, та відмічаємо Accept file uploads.
    Image description

  • У функції пишемо код, який записаний на малюнку. Оскільки нам приходить масив, вибираємо перший елемент([0]), бо це той файл який ми завантажуємо. Перетворюємо дані на строку, та методом slice вирізаємо інформацію яке несе тип файлу, залишаючи тільки закодовані данні.
    Image description

  • Вибираємо вузол Base64, у властивостях дописуємо payload, та вибираємо дію ConvertBuffer<->Base64
    Image description

  • В наступному вузлі(це function), те що приходить після Base64 перетворюємо на строку
    Image description

  • Та передаємо до вузла csv.В результаті чого, ми отримаємо на виході json дані які можемо передати в таблицю.
    Image description

  • Формуємо запит для нашого postgresql. Щоб передати всі данні з нашого файлу в таблицю, ми створюємо велику строку з цими даними, аби покласти їх як значення в запитиі до таблиці. Важливий момент, оскільки postgresql має строгу типізацію, порядковість написання даних має значення. Отже, назва значення стовбця має мати в запиті таку ж порядковість, як і сам стовбець.
    Image description

  • Далі вибираємо наш вузол postgresql, в ньому потрібно вказати нашу базу дaних яку створили, та відмітити Receive query output.
    Image description

  • І в кінці додаємо наш http-response

UI

На UI додаємо віджет FILEPICKER, та в його налаштуванні вибираємо формати(Data Format) - Base64.

Image description

Далі створюємо наш API запит. Там де з права вибирали віджети натискаємо Explorer > Біля API/JS натискаємо на полюс > Вибираємо New Blank API > відкривається вікно з заповненням наших даних для запиту. Записуємо все, згідно того, що на фото
Image description

Коли данні заповнили, згідно того, що на фото, можемо натискати на створений Filepicker, та завантажувати наш csv файл. Так данні, які були у файлі додаються в БД.

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

Discussion (0)