exponenta event banner

executeSQLScript

Выполнение сценария SQL в базе данных MySQL

Описание

пример

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

пример

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

Примеры

свернуть все

Подключение к базе данных MySQL ®. Затем запустите два SQLSELECT операторы из файла сценария SQL compare_sales.sql, импортировать результаты и выполнить простой анализ данных продаж. Файл содержит два SQL-запроса: первый извлекает продажи продуктов от американских поставщиков, а второй извлекает продажи продуктов от зарубежных поставщиков.

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

datasource = "MySQLNative";
username = "root";
password = "matlab";
conn = mysql(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)

Подключение к базе данных MySQL ®. Затем запустите два SQLSELECT операторы из файла сценария SQL compare_sales.sql. Импортируйте результаты из запросов SQL в виде структур и выполняйте простой анализ данных продаж. Файл содержит два SQL-запроса: первый SQL-запрос извлекает продажи продуктов от американских поставщиков, а второй - продажи продуктов от зарубежных поставщиков.

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

datasource = "MySQLNative";
username = "root";
password = "matlab";
conn = mysql(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 = struct with fields:
    productDescription: [4×1 string]
          supplierName: [4×1 string]
                  city: [4×1 string]
             Jan_Sales: [4×1 double]
             Feb_Sales: [4×1 double]
             Mar_Sales: [4×1 double]

Определите наибольшую сумму продаж в январе.

max(data.Jan_Sales)
ans = 3000

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

close(conn)

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

свернуть все

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

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

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

SELECT productDescription, supplierName
FROM suppliers A, productTable B
WHERE A.SupplierNumber = 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

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

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

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

  • структура

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

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

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

Message

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

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

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

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