exponenta event banner

выбрать

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

Описание

пример

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 и 11.00.5058 драйверов Microsoft ® SQL Server ®.

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

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

Создайте подключение базы данных к базе данных 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 с помощью 11.00.5058 драйверов Microsoft ® SQL Server ®.

Создайте подключение базы данных к базе данных 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 с помощью 11.00.5058 драйверов Microsoft ® SQL Server ®.

Создайте подключение базы данных к базе данных 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)

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

свернуть все

Подключение к базе данных, указанное как ODBC connection объект или JDBC connection объект, созданный с помощью database функция.

SQL SELECT оператор, указанный как символьный вектор или строка. select функция выполняет только SQL SELECT заявления. Для выполнения других инструкций SQL используйте exec функция.

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

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'MaxRows',100,'QueryTimeOut',5 возвращает 100 строк данных и ожидает выполнения SQL в течение 5 секунд 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 не поддерживает cell и struct типы данных. select функция поддерживает только table.

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

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

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