exponenta event banner

executeSQLScript

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

Описание

пример

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

пример

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

Примеры

свернуть все

Подключение к базе данных Microsoft ® SQL Server ®. Затем запустите два SQLSELECT операторы из файла сценария 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 ®. Затем запустите два SQLSELECT операторы из файла сценария 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)

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

свернуть все

Подключение к базе данных, указанное как ODBC connection объект или JDBC 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

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

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

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

  • структура

Сохраняет результаты выполнения 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 функция для возврата ошибки.

Представлен в R2019a