выбрать

Выполните оператор SQL SELECT и импортируйте данные в MATLAB

Синтаксис

data = select(conn,selectquery)
data = select(conn,selectquery,Name,Value)
[data,metadata] = select(___)

Описание

пример

data = select(conn,selectquery) возвращает импортированные данные в соединение с базой данных conn для заданного оператора SQL SELECT selectquery.

пример

data = select(conn,selectquery,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Например, 'MaxRows',10 определяет максимальный номер строк, чтобы возвратиться к 10 строкам.

пример

[data,metadata] = select(___) возвращает информацию об импортированных данных с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах. Используйте эту информацию, чтобы изменить отсутствующие значения в импортированных данных и типах данных представления для каждой переменной.

Примеры

свернуть все

Импортируйте данные от базы данных за один шаг с помощью функции select. Можно получить доступ к данным и выполнить мгновенный анализ данных.

Код принимает, что у вас есть таблица базы данных Patients, сохраненный на базе данных Microsoft® SQL Server®. Эта таблица содержит данные о пациентах в 10 столбцах и строках. Табличное определение:

CREATE TABLE Patients(
      LastName VARCHAR(50),
      Gender VARCHAR(10),
      Age TINYINT,
      Location VARCHAR(300),
      Height SMALLINT,
      Weight SMALLINT,
      Smoker BIT,
      Systolic FLOAT,
      Diastolic NUMERIC,
      SelfAssessedHealthStatus VARCHAR(20))

Этот пример использует базу данных Microsoft® SQL Server® Version 11.00.2100 и Microsoft® SQL Server® Driver 11.00.5058.

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

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

Импортируйте все данные из таблицы Patients путем выполнения оператора SQL SELECT с помощью функции select. data является таблицей, которая содержит импортированные данные.

selectquery = 'SELECT * FROM Patients';

data = select(conn,selectquery)
data =

  10×10 table

     LastName      Gender     Age             Location             Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    __________    ________    ___    __________________________    ______    ______    ______    ________    _________    ________________________

    'Smith'       'Male'      38     'Country General Hospital'    -32768       176    true      124          93          'Excellent'             
    'Johnson'     'Male'      43     'VA Hospital'                     69       163    false     NaN          77          'Fair'                  
    'Williams'    'Female'    38     ''                                64       131    false     125          83          'Good'                  
    'Jones'       'Female'     0     'VA Hospital'                     67       133    false     117          75          'Fair'                  
    'Broen'       'Female'    49     'Country General Hospital'        64       119    false     122          80          'Good'                  
    'Davis'       'Female'    46     'St Mary's Medical Center'        68       142    false     121         NaN          'Good'                  
    'Miller'      'Female'    33     'VA Hospital'                     64       142    true      130          88          'Good'                  
    'Wilson'      'Male'      40     'VA Hospital'                 -32768       180    false     115          82          'Good'                  
    'Moore'       'Male'      28     'St Mary's Medical Center'        68    -32768    false     115          78          'Excellent'             
    'Taylor'      'Female'    31     'Country General Hospital'        68       132    false     NaN          86          'Excellent'             

Определите количество штекерных пациентов путем мгновенного доступа к данным. Используйте функцию count, чтобы найти случаи в гендерных данных вектора символов, который представляет штекер. Определите общее количество случаев.

males = count(data.Gender,'Male');
sum(males)
ans =

     4

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

close(conn)

Импортируйте ограниченное количество строк от базы данных за один шаг с помощью функции select. Database Toolbox™ импортирует данные с помощью типов числовых данных MATLAB®, которые соответствуют типам данных в таблице базы данных. После импортирования данных можно получить доступ к данным и выполнить мгновенный анализ данных.

Код принимает, что у вас есть таблица базы данных Patients, сохраненный на базе данных Microsoft® SQL Server®. Эта таблица содержит данные о пациентах в 10 столбцах и строках. Табличное определение:

CREATE TABLE Patients(
      LastName VARCHAR(50),
      Gender VARCHAR(10),
      Age TINYINT,
      Location VARCHAR(300),
      Height SMALLINT,
      Weight SMALLINT,
      Smoker BIT,
      Systolic FLOAT,
      Diastolic NUMERIC,
      SelfAssessedHealthStatus VARCHAR(20))

Здесь, соединитесь с базой данных Microsoft® SQL Server® Version 11.00.2100 с помощью Microsoft® SQL Server® Driver 11.00.5058.

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

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

Импортируйте данные из таблицы Patients путем выполнения оператора SQL SELECT с помощью функции select. Ограничьте количество импортированных строк с помощью аргумента пары "имя-значение" 'MaxRows'.

data является таблицей. Типы данных MATLAB® в таблице соответствуют типам данных в базе данных. Здесь, Age имеет тип данных uint8, который соответствует TINYINT в табличном определении.

metadata является таблицей, которая содержит дополнительную информацию о каждой переменной в data.

  • VariableType - Тип данных MATLAB®

  • MissingValue -- представление значения NULL

  • MissingRows - Вектор индексов строки, которые содержат отсутствующее значение

selectquery = 'SELECT * FROM Patients';

[data,metadata] = select(conn,selectquery,'MaxRows',5)
data =

  5×10 table

     LastName      Gender     Age             Location             Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    __________    ________    ___    __________________________    ______    ______    ______    ________    _________    ________________________

    'Smith'       'Male'      38     'Country General Hospital'    -32768    176       true      124         93           'Excellent'             
    'Johnson'     'Male'      43     'VA Hospital'                     69    163       false     NaN         77           'Fair'                  
    'Williams'    'Female'    38     ''                                64    131       false     125         83           'Good'                  
    'Jones'       'Female'     0     'VA Hospital'                     67    133       false     117         75           'Fair'                  
    'Broen'       'Female'    49     'Country General Hospital'        64    119       false     122         80           'Good'                  


metadata =

  10×3 table

                                VariableType    MissingValue    MissingRows 
                                ____________    ____________    ____________

    LastName                    'char'          ''              [0×1 double]
    Gender                      'char'          ''              [0×1 double]
    Age                         'uint8'         [     0]        [         4]
    Location                    'char'          ''              [0×1 double]
    Height                      'int16'         [-32768]        [         1]
    Weight                      'int16'         [-32768]        [0×1 double]
    Smoker                      'logical'       [     0]        [0×1 double]
    Systolic                    'single'        [   NaN]        [         2]
    Diastolic                   'double'        [   NaN]        [0×1 double]
    SelfAssessedHealthStatus    'char'          ''              [0×1 double]

Определите количество штекерных пациентов путем мгновенного доступа к данным. Используйте функцию count, чтобы найти случаи в гендерных данных вектора символов, который представляет штекер. Определите общее количество случаев.

males = count(data.Gender,'Male');
sum(males)
ans =

     2

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

close(conn)

Импортируйте данные от базы данных за один шаг с помощью функции select. Database Toolbox™ импортирует данные с помощью типов числовых данных MATLAB®, которые соответствуют типам данных в таблице базы данных. Можно просмотреть информацию о типе данных в импортированных данных. Можно также получить доступ к данным и выполнить мгновенный анализ данных.

Код принимает, что у вас есть таблица базы данных Patients, сохраненный на базе данных Microsoft® SQL Server®. Эта таблица содержит данные о пациентах в 10 столбцах и строках. Табличное определение:

CREATE TABLE Patients(
      LastName VARCHAR(50),
      Gender VARCHAR(10),
      Age TINYINT,
      Location VARCHAR(300),
      Height SMALLINT,
      Weight SMALLINT,
      Smoker BIT,
      Systolic FLOAT,
      Diastolic NUMERIC,
      SelfAssessedHealthStatus VARCHAR(20))

Здесь, соединитесь с базой данных Microsoft® SQL Server® Version 11.00.2100 с помощью Microsoft® SQL Server® Driver 11.00.5058.

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

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

Импортируйте все данные из таблицы Patients путем выполнения оператора SQL SELECT с помощью функции select.

data является таблицей. Типы данных MATLAB® в таблице соответствуют типам данных в базе данных. Здесь, Age имеет тип данных MATLAB® uint8, который соответствует TINYINT в табличном определении.

metadata является таблицей, которая содержит дополнительную информацию о каждой переменной в data.

  • VariableType - Тип данных MATLAB®

  • MissingValue -- Представление нулевого значения

  • MissingRows - Вектор индексов строки, которые содержат отсутствующее значение

selectquery = 'SELECT * FROM Patients';

[data,metadata] = select(conn,selectquery)
data =

  10×10 table

     LastName      Gender     Age             Location             Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    __________    ________    ___    __________________________    ______    ______    ______    ________    _________    ________________________

    'Smith'       'Male'      38     'Country General Hospital'    -32768       176    true      124          93          'Excellent'             
    'Johnson'     'Male'      43     'VA Hospital'                     69       163    false     NaN          77          'Fair'                  
    'Williams'    'Female'    38     ''                                64       131    false     125          83          'Good'                  
    'Jones'       'Female'     0     'VA Hospital'                     67       133    false     117          75          'Fair'                  
    'Broen'       'Female'    49     'Country General Hospital'        64       119    false     122          80          'Good'                  
    'Davis'       'Female'    46     'St Mary's Medical Center'        68       142    false     121         NaN          'Good'                  
    'Miller'      'Female'    33     'VA Hospital'                     64       142    true      130          88          'Good'                  
    'Wilson'      'Male'      40     'VA Hospital'                 -32768       180    false     115          82          'Good'                  
    'Moore'       'Male'      28     'St Mary's Medical Center'        68    -32768    false     115          78          'Excellent'             
    'Taylor'      'Female'    31     'Country General Hospital'        68       132    false     NaN          86          'Excellent'             


metadata =

  10×3 table

                                VariableType    MissingValue    MissingRows 
                                ____________    ____________    ____________

    LastName                    'char'          ''              [0×1 double]
    Gender                      'char'          ''              [0×1 double]
    Age                         'uint8'         [     0]        [         4]
    Location                    'char'          ''              [0×1 double]
    Height                      'int16'         [-32768]        [2×1 double]
    Weight                      'int16'         [-32768]        [         9]
    Smoker                      'logical'       [     0]        [0×1 double]
    Systolic                    'single'        [   NaN]        [2×1 double]
    Diastolic                   'double'        [   NaN]        [         6]
    SelfAssessedHealthStatus    'char'          ''              [0×1 double]

Просмотрите типы данных каждой переменной в таблице.

metadata.VariableType
ans =

  10×1 cell array

    'char'
    'char'
    'uint8'
    'char'
    'int16'
    'int16'
    'logical'
    'single'
    'double'
    'char'

Определите количество штекерных пациентов путем мгновенного доступа к данным. Используйте функцию count, чтобы найти случаи в гендерных данных вектора символов, который представляет штекер. Определите общее количество случаев.

males = count(data.Gender,'Male');
sum(males)
ans =

     4

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

close(conn)

Импортируйте данные от базы данных за один шаг с помощью функции select. Во время импорта функция select устанавливает значения по умолчанию для недостающих данных в каждой строке. Используйте информацию об импортированных данных, чтобы изменить значения по умолчанию.

Код принимает, что у вас есть таблица базы данных Patients, сохраненный на базе данных Microsoft® SQL Server®. Эта таблица содержит данные о пациентах в 10 столбцах и строках. Табличное определение:

CREATE TABLE Patients(
      LastName VARCHAR(50),
      Gender VARCHAR(10),
      Age TINYINT,
      Location VARCHAR(300),
      Height SMALLINT,
      Weight SMALLINT,
      Smoker BIT,
      Systolic FLOAT,
      Diastolic NUMERIC,
      SelfAssessedHealthStatus VARCHAR(20))

Здесь, соединитесь с базой данных Microsoft® SQL Server® Version 11.00.2100 с помощью Microsoft® SQL Server® Driver 11.00.5058.

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

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

Импортируйте все данные из таблицы Patients путем выполнения оператора SQL SELECT с помощью функции select.

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

metadata является таблицей, которая содержит дополнительную информацию о каждой переменной в data.

  • VariableType - Тип данных MATLAB®

  • MissingValue -- представление значения NULL

  • MissingRows - Вектор индексов строки, которые указывают на местоположение отсутствующих значений

selectquery = 'SELECT * FROM Patients';

[data,metadata] = select(conn,selectquery)
data =

  10×10 table array

     LastName      Gender     Age             Location             Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    __________    ________    ___    __________________________    ______    ______    ______    ________    _________    ________________________

    'Smith'       'Male'      38     'Country General Hospital'    -32768       176    true      124          93          'Excellent'             
    'Johnson'     'Male'      43     'VA Hospital'                     69       163    false     NaN          77          'Fair'                  
    'Williams'    'Female'    38     ''                                64       131    false     125          83          'Good'                  
    'Jones'       'Female'     0     'VA Hospital'                     67       133    false     117          75          'Fair'                  
    'Broen'       'Female'    49     'Country General Hospital'        64       119    false     122          80          'Good'                  
    'Davis'       'Female'    46     'St Mary's Medical Center'        68       142    false     121         NaN          'Good'                  
    'Miller'      'Female'    33     'VA Hospital'                     64       142    true      130          88          'Good'                  
    'Wilson'      'Male'      40     'VA Hospital'                 -32768       180    false     115          82          'Good'                  
    'Moore'       'Male'      28     'St Mary's Medical Center'        68    -32768    false     115          78          'Excellent'             
    'Taylor'      'Female'    31     'Country General Hospital'        68       132    false     NaN          86          'Excellent'             


metadata =

  10×3 table array

                                VariableType    MissingValue    MissingRows 
                                ____________    ____________    ____________

    LastName                    'char'          ''              [0×1 double]
    Gender                      'char'          ''              [0×1 double]
    Age                         'uint8'         [     0]        [         4]
    Location                    'char'          ''              [0×1 double]
    Height                      'int16'         [-32768]        [2×1 double]
    Weight                      'int16'         [-32768]        [         9]
    Smoker                      'logical'       [     0]        [0×1 double]
    Systolic                    'single'        [   NaN]        [2×1 double]
    Diastolic                   'double'        [   NaN]        [         6]
    SelfAssessedHealthStatus    'char'          ''              [0×1 double]

Получите индексы, которые указывают на местоположение отсутствующих значений в переменной Height с помощью выходного аргумента metadata.

values = metadata.MissingRows{'Height'}
values =

     1
     8

Измените значение по умолчанию для недостающих данных от -32768 до 0 с помощью цикла for. Доступ к импортированным данным с помощью индексов.

for i = 1:length(values)
    data.Height(values(i)) = 0;
end

Просмотрите импортированные данные.

data.Height
ans =

  10×1 int16 column vector

    0
   69
   64
   67
   64
   68
   64
    0
   68
   68

Отсутствующие значения появляются как 0.

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

close(conn)

Импортируйте данные от базы данных за один шаг с помощью функции select. Во время импорта функция select устанавливает значения по умолчанию для недостающих данных в каждой строке. Используйте информацию об импортированных данных, чтобы изменить значения по умолчанию путем индексации в вектор.

Код принимает, что у вас есть таблица базы данных Patients, сохраненный на базе данных Microsoft® SQL Server®. Эта таблица содержит данные о пациентах в 10 столбцах и строках. Табличное определение:

CREATE TABLE Patients(
      LastName VARCHAR(50),
      Gender VARCHAR(10),
      Age TINYINT,
      Location VARCHAR(300),
      Height SMALLINT,
      Weight SMALLINT,
      Smoker BIT,
      Systolic FLOAT,
      Diastolic NUMERIC,
      SelfAssessedHealthStatus VARCHAR(20))

Здесь, соединитесь с базой данных Microsoft® SQL Server® Version 11.00.2100 с помощью Microsoft® SQL Server® Driver 11.00.5058.

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

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

Импортируйте все данные из таблицы Patients путем выполнения оператора SQL SELECT с помощью функции select.

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

metadata является таблицей, которая содержит дополнительную информацию о каждой переменной в data.

  • VariableType - Тип данных MATLAB®

  • MissingValue -- представление значения NULL

  • MissingRows - Вектор индексов строки, которые указывают на местоположение отсутствующих значений

selectquery = 'SELECT * FROM Patients';

[data,metadata] = select(conn,selectquery)
data =

  10×10 table array

     LastName      Gender     Age             Location             Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    __________    ________    ___    __________________________    ______    ______    ______    ________    _________    ________________________

    'Smith'       'Male'      38     'Country General Hospital'    -32768       176    true      124          93          'Excellent'             
    'Johnson'     'Male'      43     'VA Hospital'                     69       163    false     NaN          77          'Fair'                  
    'Williams'    'Female'    38     ''                                64       131    false     125          83          'Good'                  
    'Jones'       'Female'     0     'VA Hospital'                     67       133    false     117          75          'Fair'                  
    'Broen'       'Female'    49     'Country General Hospital'        64       119    false     122          80          'Good'                  
    'Davis'       'Female'    46     'St Mary's Medical Center'        68       142    false     121         NaN          'Good'                  
    'Miller'      'Female'    33     'VA Hospital'                     64       142    true      130          88          'Good'                  
    'Wilson'      'Male'      40     'VA Hospital'                 -32768       180    false     115          82          'Good'                  
    'Moore'       'Male'      28     'St Mary's Medical Center'        68    -32768    false     115          78          'Excellent'             
    'Taylor'      'Female'    31     'Country General Hospital'        68       132    false     NaN          86          'Excellent'             


metadata =

  10×3 table array

                                VariableType    MissingValue    MissingRows 
                                ____________    ____________    ____________

    LastName                    'char'          ''              [0×1 double]
    Gender                      'char'          ''              [0×1 double]
    Age                         'uint8'         [     0]        [         4]
    Location                    'char'          ''              [0×1 double]
    Height                      'int16'         [-32768]        [2×1 double]
    Weight                      'int16'         [-32768]        [         9]
    Smoker                      'logical'       [     0]        [0×1 double]
    Systolic                    'single'        [   NaN]        [2×1 double]
    Diastolic                   'double'        [   NaN]        [         6]
    SelfAssessedHealthStatus    'char'          ''              [0×1 double]

Получите индексы, которые указывают на местоположение отсутствующих значений в переменной Height с помощью выходного аргумента metadata.

values = metadata(5,3)
valuesindex = values.MissingRows{1}
values =

  table

              MissingRows 
              ____________

    Height    [2×1 double]


valuesindex =

     1
     8

Измените значение по умолчанию для недостающих данных от -32768 до 0, использующего векторную индексацию.

data.Height(valuesindex) = 0;

Просмотрите импортированные данные.

data.Height
ans =

  10×1 int16 column vector

    0
   69
   64
   67
   64
   68
   64
    0
   68
   68

Отсутствующие значения появляются как 0.

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

close(conn)

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

свернуть все

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

Оператор SQL SELECT, заданный как вектор символов или строка. Функция select только выполняет операторы SQL SELECT. Чтобы выполнить другие SQL-операторы, используйте функцию exec.

Пример: 'SELECT * FROM inventoryTable'

Типы данных: char | string

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'MaxRows',100,'QueryTimeOut',5 возвращает 100 строк данных и ожидает 5 секунд, чтобы выполнить оператор SQL SELECT.

Максимальное количество строк, чтобы возвратиться, заданный как пара, разделенная запятой, состоящая из 'MaxRows' и положительного числового скаляра. По умолчанию функция select возвращает все строки в выполняемый SQL-запрос. Используйте этот аргумент пары "имя-значение", чтобы ограничить количество строк, импортированных в MATLAB®.

Пример: 'MaxRows',10

Типы данных: double

Тайм-аут SQL-запроса, заданный как пара, разделенная запятой, состоящая из 'QueryTimeOut' и положительного числового скаляра. По умолчанию функция select игнорирует значение тайм-аута. Используйте этот аргумент пары "имя-значение", чтобы задать номер секунд, чтобы ожидать выполнения SQL-запроса selectquery.

Пример: 'QueryTimeOut',15

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

свернуть все

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

Функция select возвращает дату или данные времени как векторы символов в таблице. Эта функция возвращает текст как векторы символов или массив ячеек из символьных векторов. Строки не поддержаны в таблице.

Если никакие данные, чтобы импортировать не существуют, то data является пустой таблицей.

Информация об импортированных данных, возвращенных как таблица. Имена строки metadata являются именами переменных в data. Эта функция хранит каждое имя переменной в таблице metadata как массив ячеек. metadata имеет эти имена переменных:

  • VariableType — Типы данных каждой переменной в data

  • MissingValue Представление отсутствующего значения для каждой переменной в data

  • MissingRows — Вектор индексов строки, которые указывают на местоположения отсутствующих значений для каждой переменной в data

Эта таблица показывает, как MATLAB представляет значения NULL в базе данных по умолчанию после импорта данных.

Тип данных базы данных Значение NULL по умолчанию

SIGNED TINYINT

-128

UNSIGNED TINYINT

0

SIGNED SMALLINT

-32768

UNSIGNED SMALLINT

0

SIGNED INT

-2147483648

UNSIGNED INT

0

SIGNED BIGINT

-9223372036854775808

UNSIGNED BIGINT

0

REAL

NaN

FLOAT

NaN

DOUBLE

NaN

DECIMAL

NaN

NUMERIC

NaN

Булевская переменная

false

Дата, время или текст

''

Чтобы изменить представление значения NULL в импортированных данных, замените значение по умолчанию цикличным выполнением через импортированные данные или использующий векторную индексацию.

Ограничения

  • Вы не можете настроить отсутствующие значения в выходном аргументе data с помощью функции select. Индексируйте в импортированные данные с помощью выходного аргумента metadata вместо этого.

  • Выходной аргумент data не поддерживает типы данных struct и cell. Функция select только поддерживает table.

Альтернативная функциональность

Используйте exec и функции fetch для полной функциональности при импортировании данных. Для различий между функцией select и этой альтернативой, смотрите, что Импорт Данных Использует Приложение Database Explorer или Командную строку.

Введенный в R2017a