executeSQLScript

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

Синтаксис

results = executeSQLScript(conn,scriptfile)
results = executeSQLScript(conn,scriptfile,Name,Value)

Описание

пример

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

пример

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

Примеры

свернуть все

Соединитесь с базой данных Microsoft® SQL Server®. Затем запустите два оператора SQL SELECT из файла скрипта SQL, импортируйте результаты и выполните простой анализ данных о сбыте. Файл содержит два SQL-запроса по порядку. Первый SQL-запрос получает продажи продуктов от поставщиков США, и второй SQL-запрос получает продажи продуктов от внешних поставщиков.

Чтобы найти файл скрипта SQL, перейдите к \toolbox\database\dbdemos\compare_sales.sql в вашей корневой папке MATLAB®. Скопируйте и вставьте путь в свою текущую папку.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Выполните скрипт 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=8×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   
     'Convertible'        'Incredible Machines'             'Dublin'        6000         3100         8800   
     'Hugsy'              'The Great Teddy Bear Company'    'Belfast'       1800         9700          800   
     'Pancakes'           'Aunt Jemimas'                    'New York'      3100         9400         1540   
     'Shawl'              'Indian Export'                   'Mumbai'         235         1800         1040   

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

names = data.Properties.VariableNames
names = 1×6 cell array
    {'productDescription'}    {'supplierName'}    {'city'}    {'Jan_Sales'}    {'Feb_Sales'}    {'Mar_Sales'}

Определите самый высокий объем продаж в январе.

max(data.Jan_Sales)
ans = 6000

Закройте соединение с базой данных.

close(conn)

Соединитесь с базой данных Microsoft® SQL Server®. Затем запустите два оператора SQL SELECT из файла скрипта SQL. Импортируйте результаты SQL-запросов как структуры и выполните простой анализ данных о сбыте. Файл содержит два SQL-запроса по порядку. Первый SQL-запрос получает продажи продуктов от поставщиков США, и второй SQL-запрос получает продажи продуктов от внешних поставщиков.

Чтобы найти файл скрипта SQL, перейдите к \toolbox\database\dbdemos\compare_sales.sql в вашей корневой папке MATLAB®. Скопируйте и вставьте путь в свою текущую папку.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Выполните скрипт 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: {9×1 cell}
          supplierName: {9×1 cell}
                  city: {9×1 cell}
             Jan_Sales: [9×1 double]
             Feb_Sales: [9×1 double]
             Mar_Sales: [9×1 double]

Определите самый высокий объем продаж в январе.

max(data.Jan_Sales)
ans = 6000

Закройте соединение с базой данных.

close(conn)

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

свернуть все

Соединение с базой данных, заданное как объект connection, создается с функцией database.

Имя файла скрипта 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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) содержит результаты выполнения M th SQL-оператор в файле скрипта SQL. Если SQL-оператор возвращает результаты запроса, то результаты хранятся в results(M).Data.

Для получения дополнительной информации о доступе к массивам структур, см. Доступ к данным в Массиве структур (MATLAB).

Ограничения

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

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

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

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

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

Введенный в R2019a