executeSQLScript

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

Описание

пример

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

пример

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

Примеры

свернуть все

Соединитесь с базой данных PostgreSQL. Затем запустите два SQL SELECT операторы из файла скрипта 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

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. Затем запустите два SQL SELECT операторы из файла скрипта 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

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. Следующее является примером двух SQL SELECT операторы.

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"

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

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

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

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

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

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

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

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

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

свернуть все

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

Имя поляПолевой тип данныхПолевое описание

SQLQuery

символьный вектор

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

Data

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

  • cellArray

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

  • структура

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

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

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

Message

символьный вектор

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

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

Число элементов в массиве структур равно количеству SQL-операторов в файле скрипта SQL. results(M) содержит результаты выполнения MSQL-оператор th в файле скрипта 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