Spec-Zone.ru › MariaDB

CONNECT - Файлы, полученные с помощью запросов Rest

Начиная с CONNECT версии 1.07.0001, файлы данных JSON, XML и, возможно, CSV могут быть получены в качестве результатов запросов REST при создании или запросе таких таблиц. Это делается внутри CONNECT с помощью программы CURL, обычно доступной на всех системах (если нет, просто установите её).

Это также можно сделать с помощью пакета Microsoft Casablanca (cpprestsdk). Для этого сначала установите пакет, как описано в https://github.com/microsoft/cpprestsdk. Затем создайте библиотеку GetRest (dll или подобное), как описано в Создание библиотеки GetRest.

Примечание: Если оба пакета доступны, предпочтительно используется cpprestsdk, поскольку он быстрее. Это можно изменить, указав «curl=1» в списке опций.

Примечание: Если вы хотите использовать эту функцию со старой распределенной версией MariaDB, не имеющей REST, её можно добавить как модуль OEM, как описано в Добавление функции REST в качестве библиотеки, вызываемой таблицей OEM.

Создание таблиц с использованием REST

Для этого укажите HTTP веб-клиента и, возможно, URI запроса в инструкции CREATE TABLE. Например, для запроса, возвращающего данные JSON:

CREATE TABLE webusers (
  id bigint(2) NOT NULL,
  name char(24) NOT NULL,
  username char(16) NOT NULL,
  email char(25) NOT NULL,
  address varchar(256) DEFAULT NULL,
  phone char(21) NOT NULL,
  website char(13) NOT NULL,
  company varchar(256) DEFAULT NULL
) ENGINE=CONNECT DEFAULT CHARSET=utf8
TABLE_TYPE=JSON FILE_NAME='users.json' HTTP='http://jsonplaceholder.typicode.com' URI='/users';

Как и в стандартных таблицах JSON, возможна обнаружение, то есть вы можете позволить CONNECT определить столбцы, проанализировав файл JSON. Здесь вы можете просто сделать:

CREATE TABLE webusers
ENGINE=CONNECT DEFAULT CHARSET=utf8
TABLE_TYPE=JSON FILE_NAME='users.json'
HTTP='http://jsonplaceholder.typicode.com' URI='/users';

Например, выполнение:

SELECT name, address FROM webusers2 LIMIT 1;

возвращает:

name address
Leanne Graham Kulas Light Apt. 556 Gwenborough 92998-3874 -37.3159 81.1496

Здесь мы видим, что для некоторых сложных элементов, таких как address, который является объектом Json, содержащим значения и объекты, CONNECT по умолчанию просто выводит их текст, разделенный пробелами. Но можно попросить его более глубоко проанализировать результат json, добавив опцию DEPTH. Например:

CREATE OR REPLACE TABLE webusers
ENGINE=CONNECT DEFAULT CHARSET=utf8
TABLE_TYPE=JSON FILE_NAME='users.json'
HTTP='http://jsonplaceholder.typicode.com' URI='/users'
OPTION_LIST='Depth=2';

Тогда таблица будет создана как:

CREATE TABLE `webusers3` (
  `id` bigint(2) NOT NULL,
  `name` char(24) NOT NULL,
  `username` char(16) NOT NULL,
  `email` char(25) NOT NULL,
  `address_street` char(17) NOT NULL `JPATH`='$.address.street',
  `address_suite` char(9) NOT NULL `JPATH`='$.address.suite',
  `address_city` char(14) NOT NULL `JPATH`='$.address.city',
  `address_zipcode` char(10) NOT NULL `JPATH`='$.address.zipcode',
  `address_geo_lat` char(8) NOT NULL `JPATH`='$.address.geo.lat',
  `address_geo_lng` char(9) NOT NULL `JPATH`='$.address.geo.lng',
  `phone` char(21) NOT NULL,
  `website` char(13) NOT NULL,
  `company_name` char(18) NOT NULL `JPATH`='$.company.name',
  `company_catchPhrase` char(40) NOT NULL `JPATH`='$.company.catchPhrase',
  `company_bs` varchar(36) NOT NULL `JPATH`='$.company.bs'
) ENGINE=CONNECT DEFAULT CHARSET=utf8 `TABLE_TYPE`='JSON' `FILE_NAME`='users.json' `OPTION_LIST`='Depth=2' `HTTP`='http://jsonplaceholder.typicode.com' `URI`='/users';

Позволяя получить все значения результата Json, например:

SELECT name, address_city city, company_name company FROM webusers3;

Что приводит к:

Имя Город Компания
Leanne Graham Gwenborough Romaguera-Crona
Ervin Howell Wisokyburgh Deckow-Crist
Clementine Bauch McKenziehaven Romaguera-Jacobson
Patricia Lebsack South Elvis Robel-Corkery
Chelsey Dietrich Roscoeview Keebler LLC
Mrs. Dennis Schulist South Christy Considine-Lockman
Kurtis Weissnat Howemouth Johns Group
Nicholas Runolfsdottir V Aliyaview Abernathy Group
Glenna Reichert Bartholomebury Yost and Sons
Clementina DuBuque Lebsackbury Hoeger LLC

Конечно, полную таблицу создания (полученную с помощью SHOW CREATE TABLE) можно позже отредактировать, чтобы ваша таблица возвращала именно то, что вам нужно. Подробнее о том, что и как нужно указать, см. в типе JSON-таблицы.

Обратите внимание, что такие таблицы только для чтения. Кроме того, данные будут извлекаться из веб-сайта каждый раз при запросе к таблице с помощью оператора SELECT. Это нормально, если результат меняется каждый раз, например, когда вы запрашиваете прогноз погоды. Но если вы хотите использовать полученный файл многократно без перезагрузки, просто создайте другую таблицу на том же файле, не указывая опцию HTTP.

Примечание: для JSON-таблиц указание имени файла необязательно и по умолчанию равно tabname.type. Однако вы должны указать его, если хотите использовать файл позже для других таблиц.

Посмотрите тип JSON-таблицы для изменений, которые произойдут в новых версиях CONNECT (распределённых в начале 2021 года).

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/connect-files-retrieved-using-rest-queries/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API