executeSQLScript

Выполните SQL скрипт в базе данных PostgreSQL

Описание

пример

results = executeSQLScript(conn,scriptfile) использует подключение к базе данных conn чтобы вернуть массив структур, который содержит результаты как таблицу (по умолчанию) для каждого выполненного SQL SELECT оператор в файле скрипта SQL. Для любых не- SELECT SQL операторов, соответствующая таблица пуста. executeSQLScript функция выполняет все операторов SQL в файле SQL скрипта.

пример

results = executeSQLScript(conn,scriptfile,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение". Для примера, 'DataReturnFormat',"cellarray" сохраняет результаты выполненного оператора SQL как массив ячеек. Результаты хранятся в Data поле results массив структур.

Примеры

свернуть все

Подключение к базе данных PostgreSQL. Затем запустите два SELECT SQL операторы из файла скрипта SQL compare_sales.sqlимпортируйте результаты и выполните простой анализ данных о продажах. Файл содержит два запроса SQL: первый извлекает продажи продуктов от поставщиков из США, а второй извлекает продажи продуктов от иностранных поставщиков.

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с помощью имени источника данных, имени пользователя и пароля. База данных содержит таблицы productTable и suppliers.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

Выполните скрипт SQL. Скрипт SQL содержит два запроса SQL, которые получают данные о продажах от американских и иностранных поставщиков, соответственно.

scriptfile = "compare_sales.sql";
results = executeSQLScript(conn,scriptfile)
results=1×2 struct array with fields:
    SQLQuery
    Data
    Message

The executeSQLScript функция возвращает массив структур, содержащий две таблицы в Data поле. Первая таблица содержит результаты выполнения первого SQL-запроса в файле SQL скрипта. Вторая таблица содержит результаты выполнения второго запроса SQL.

Отображение первых восьми строк импортированных данных для второго запроса SQL в файле скрипта SQL. Данные показывают результаты продаж от иностранных поставщиков.

data = head(results(2).Data)
data=4×6 table
    productdescription        suppliername            city       jan_sales    feb_sales    mar_sales
    __________________    _____________________    __________    _________    _________    _________

     "Victorian Doll"     "Wacky Widgets"          "Adelaide"      1400         1100          981   
     "Painting Set"       "Terrific Toys"          "London"        3000         2400         1800   
     "Sail Boat"          "Incredible Machines"    "Dublin"        3000         2400         1500   
     "Slinky"             "Doll's Galore"          "London"        3000         1500         1000   

Получите имена переменных в таблице.

names = data.Properties.VariableNames
names = 1×6 cell
    {'productdescription'}    {'suppliername'}    {'city'}    {'jan_sales'}    {'feb_sales'}    {'mar_sales'}

Определите самую высокую сумму продаж в январе.

max(data.jan_sales)
ans = 3000

Закройте подключение к базе данных.

close(conn)

Подключение к базе данных PostgreSQL. Затем запустите два SELECT SQL операторы из файла скрипта SQL compare_sales.sql. Импортируйте результаты из запросов SQL как структуры и выполните простой анализ данных продаж. Файл содержит два запроса SQL: первый извлекает продажи продуктов от поставщиков из США, а второй извлекает продажи продуктов от иностранных поставщиков.

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с помощью имени источника данных, имени пользователя и пароля. База данных содержит таблицы productTable и suppliers.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

Выполните скрипт SQL. Скрипт SQL содержит два запроса SQL, которые получают данные о продажах от американских и иностранных поставщиков, соответственно. Задайте structure как формат возврата данных для результатов запроса.

scriptfile = "compare_sales.sql";
results = executeSQLScript(conn,scriptfile, ...
    'DataReturnFormat',"structure")
results=1×2 struct array with fields:
    SQLQuery
    Data
    Message

The executeSQLScript функция возвращает массив структур, содержащий две структуры в Data поле. Первая структура содержит результаты выполнения первого SQL-запроса в файле SQL скрипта. Вторая структура содержит результаты выполнения второго SQL-запроса.

Отображение импортированных данных для второго запроса SQL в файле SQL скрипта. Данные содержат результаты продаж от иностранных поставщиков.

data = results(2).Data
data=4×1 struct array with fields:
    productdescription
    suppliername
    city
    jan_sales
    feb_sales
    mar_sales

Определите самую высокую сумму продаж в январе.

for i = 1:length(data) 
    jan_sales(i,1) = data(i).jan_sales; 
end
max(jan_sales)
ans = 3000

Закройте подключение к базе данных.

close(conn)

Входные параметры

свернуть все

Подключение к базе данных собственного интерфейса PostgreSQL, заданное как connection объект.

Имя файла скрипта SQL, содержащего один или несколько операторов SQL для выполнения, заданное как вектор символов или строковый скаляр. Файл должен быть текстовым файлом и может содержать комментарии в дополнение к SQL запросам. Запуск однострочных комментариев с --. Строковые комментарии заключаются в /*...*/.

Файл скрипта SQL может содержать одни или несколько операторов SQL, завершенных точкой с запятой или ключевым словом GO. Ниже приведен пример двух SELECT SQL операторы.

SELECT productdescription, suppliername
FROM suppliers a, producttable b
WHERE a.auppliernumber = b.suppliernumber;

SELECT suppliername, country
FROM suppliers;

Пример: 'C:\work\sql_file.sql'

Типы данных: char | string

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: results = executeSQLScript(conn,scriptfile,'DataReturnFormat',"numeric",'ErrorHandling',"store") возвращает результаты запросов в виде числовой матрицы в Data поле results массив структур и сохраняет любое сообщение об ошибке в Message область results.

Формат возврата данных, заданный как разделенная разделенными запятой парами, состоящая из 'DataReturnFormat' и одно из следующих значений:

  • "table"

  • "cellarray"

  • "numeric"

  • "structure"

Можно задать значение с помощью вектора символов или строкового скаляра.

The 'DataReturnFormat' аргумент пары "имя-значение" задает тип данных Data поле в results массив структур.

Пример: 'DataReturnFormat',"structure" возвращает массив структур, который содержит результаты запросов, хранящиеся в структурах.

Обработка ошибок, заданная как разделенная разделенными запятой парами, состоящая из 'ErrorHandling' и одно из следующих значений:

  • "report" - Когда инструкция SQL не выполняется, остановите выполнение остальных операторов SQL в файле скрипта SQL и отобразите сообщение об ошибке в командной строке.

  • "store" - Когда оператор SQL не выполняется, сохраните сообщение об ошибке в Message поле results массив структур.

Можно задать значение с помощью вектора символов или строкового скаляра.

Пример: 'ErrorHandling',"report" отображает сообщение об ошибке в командной строке.

Выходные аргументы

свернуть все

Результаты запроса из выполненных SQL- операторов в файле SQL скриптов, возвращенных как массив структур с этими полями.

Имя поляТип полевых данныхОписание поля

SQLQuery

вектор символов

Хранит оператора SQL или операторов, выполненные в файле SQL скрипта.

Data

  • таблица (по умолчанию)

  • массив ячеек

  • числовая матрица

  • структура

Хранит результаты выполненных SELECT SQL операторы.

The 'DataReturnFormat' аргумент пары "имя-значение" задает тип данных Data поле.

Для не- SELECT SQL- операторов, Data поле представляет собой пустую таблицу, что означает, что выполненный SQL-запрос не имеет результатов.

Message

вектор символов

Сохраняет сообщение об ошибке для соответствующего оператора SQL, которая не выполняется.

The Message поле содержит сообщение об ошибке, только если вы задаете 'ErrorHandling' аргумент пары "имя-значение" со значением "store".

Количество элементов в массиве структур равно количеству операторов SQL в файле SQL скрипта. results(M) содержит результаты выполнения M1ним оператором SQL в файле SQL скрипта. Если оператор SQL возвращает результаты запроса, результаты сохраняются в results(M).Data.

Для получения дополнительной информации о доступе к массивам структур см. раздел «Массивы структур».

Ограничения

  • Используйте executeSQLScript функция для импорта данных в MATLAB®, особенно если у вас есть длинные и сложные запросы SQL, которые трудно преобразовать в векторы символов MATLAB или строковые скаляры. executeSQLScript функция не поддерживает SQL скрипты, содержащие непрерывные блоки PL/SQL с BEGIN и END, таких как определения хранимых процедур или определения триггеров. Однако, executeSQLScript поддерживает ли определения таблиц.

  • Скрипт SQL, содержащий одно из следующих значений, может привести к неожиданным результатам:

    • Апострофы, которые не сбежали, в том числе и в комментариях. Например, запишите вектор символов 'Here's the code' как 'Here''s the code'.

    • Вложенные комментарии.

  • Скрипт SQL, содержащий более 25 000 символов, вызывает executeSQLScript функция для возврата ошибки.

Введенный в R2020b
Для просмотра документации необходимо авторизоваться на сайте