executeSQLScript

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

Описание

пример

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 compare_sales.sql, импортируйте результаты и выполните простой анализ данных о сбыте. Файл содержит два SQL-запроса в порядке. Первый SQL-запрос получает продажи продуктов от поставщиков США, и второй SQL-запрос получает продажи продуктов от внешних поставщиков.

Создайте соединение с базой данных 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 compare_sales.sql. Импортируйте результаты SQL-запросов как структуры и выполните простой анализ данных о сбыте. Файл содержит два SQL-запроса в порядке. Первый SQL-запрос получает продажи продуктов от поставщиков США, и второй SQL-запрос получает продажи продуктов от внешних поставщиков.

Создайте соединение с базой данных 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 имя аргумента и 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 функционируйте, чтобы возвратить ошибку.

Введенный в R2019a