select

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

Описание

пример

data = select(conn,selectquery) возвращает импортированные данные из подключения к базе данных conn для заданного SELECT SQL оператор 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 функция. 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 с помощью 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 функция. 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 с помощью 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 строк данных и ожидает 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 не поддерживает cell и struct типы данных. select функция поддерживает только table.

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

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

Введенный в R2017a