sqlread

Импортируйте данные в MATLAB от таблицы базы данных

Синтаксис

data = sqlread(conn,tablename)
data = sqlread(conn,tablename,opts)
data = sqlread(___,Name,Value)
[data,metadata] = sqlread(___)

Описание

пример

data = sqlread(conn,tablename) возвращает таблицу путем импортирования данных в MATLAB® от таблицы базы данных. Выполнение этой функции является эквивалентом записи SQL-оператора SELECT * FROM tablename в ANSI SQL.

пример

data = sqlread(conn,tablename,opts) настраивает опции для того, чтобы импортировать данные от таблицы базы данных с помощью объекта SQLImportOptions.

пример

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

пример

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

Примеры

свернуть все

Используйте связь ODBC, чтобы импортировать данные о продукте от таблицы базы данных в MATLAB® с помощью базы данных Microsoft® SQL Server®. Затем выполните простой анализ данных.

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

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

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Импортируйте данные от таблицы базы данных productTable. Функция sqlread возвращает таблицу MATLAB®, которая содержит данные о продукте.

tablename = 'productTable';
data = sqlread(conn,tablename);

Отобразите первые несколько продуктов.

head(data,3)
ans =

  3×5 table

    productNumber    stockNumber    supplierNumber    unitCost    productDescription
    _____________    ___________    ______________    ________    __________________

          9          1.2597e+05          1003            13        'Victorian Doll' 
          8          2.1257e+05          1001             5        'Train Set'      
          7          3.8912e+05          1007            16        'Engine Kit'     

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

close(conn)

Настройте настройки импорта при импортировании данных от таблицы базы данных. Управляйте настройками импорта путем создания объекта SQLImportOptions. Затем настройте настройки импорта для различных столбцов базы данных. Импортируйте данные с помощью функции sqlread .

Этот пример использует файл patients.xls, который содержит столбцы Gender, Location, SelfAssessedHealthStatus и Smoker. Пример также использует базу данных Microsoft® SQL Server® Version 11.00.2100 и Драйвер Microsoft SQL Server 11.00.5058.

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

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

Загрузите терпеливую информацию в рабочую область MATLAB®.

patients = readtable('patients.xls');

Создайте таблицу базы данных patients с помощью терпеливой информации.

tablename = 'patients';
sqlwrite(conn,tablename,patients)

Создайте объект SQLImportOptions с помощью таблицы базы данных patients и функции databaseImportOptions.

opts = databaseImportOptions(conn,tablename)

Отобразите текущие настройки импорта для переменных, выбранных в свойстве SelectedVariableNames объекта SQLImportOptions.

vars = opts.SelectedVariableNames;
varOpts = getoptions(opts,vars)
varOpts = 
    1x10 SQLVariableImportOptions array with properties:

   Variable Options:
                    (1) |      (2) |      (3) |        (4) |      (5) |      (6) |      (7) |        (8) |         (9) |                       (10)  
       Name: 'LastName' | 'Gender' |    'Age' | 'Location' | 'Height' | 'Weight' | 'Smoker' | 'Systolic' | 'Diastolic' | 'SelfAssessedHealthStatus'
       Type:     'char' |   'char' | 'double' |     'char' | 'double' | 'double' | 'double' |   'double' |    'double' |                     'char'
  FillValue:         '' |       '' |    [NaN] |         '' |    [NaN] |    [NaN] |    [NaN] |      [NaN] |       [NaN] |                         ''

	To access sub-properties of each variable, use getoptions

Измените типы данных для Gender, Location, SelfAssessedHealthStatus и переменных Smoker с помощью функции setoptions . Поскольку Gender, Location и переменные SelfAssessedHealthStatus указывают на конечное множество повторяющихся значений, изменяют их тип данных на categorical. Because, переменная Smoker хранит значения 0 и 1, измените его тип данных на logical. Затем отобразите обновленные настройки импорта.

opts = setoptions(opts,{'Gender','Location','SelfAssessedHealthStatus'}, ...
    'Type','categorical');
opts = setoptions(opts,'Smoker','Type','logical');

varOpts = getoptions(opts,{'Gender','Location','Smoker', ...
    'SelfAssessedHealthStatus'})
varOpts = 
    1x4 SQLVariableImportOptions array with properties:

   Variable Options:
                       (1) |           (2) |       (3) |                        (4)  
       Name:      'Gender' |    'Location' |  'Smoker' | 'SelfAssessedHealthStatus'
       Type: 'categorical' | 'categorical' | 'logical' |              'categorical'
  FillValue:   <undefined> |   <undefined> |         0 |                <undefined>

	To access sub-properties of each variable, use getoptions

Импортируйте таблицу базы данных patients с помощью функции sqlread и отобразите последние восемь строк таблицы.

data = sqlread(conn,tablename,opts);
tail(data)
ans=8×10 table
     LastName      Gender    Age            Location             Height    Weight    Smoker    Systolic    Diastolic    SelfAssessedHealthStatus
    ___________    ______    ___    _________________________    ______    ______    ______    ________    _________    ________________________

    'Foster'       Female    30     St. Mary's Medical Center      70       124      false       130          91               Fair             
    'Gonzales'     Male      48     County General Hospital        71       174      false       123          79               Good             
    'Bryant'       Female    48     County General Hospital        66       134      false       129          73               Excellent        
    'Alexander'    Male      25     County General Hospital        69       171      true        128          99               Good             
    'Russell'      Male      44     VA Hospital                    69       188      true        124          92               Good             
    'Griffin'      Male      49     County General Hospital        70       186      false       119          74               Fair             
    'Diaz'         Male      45     County General Hospital        68       172      true        136          93               Good             
    'Hayes'        Male      48     County General Hospital        66       177      false       114          86               Fair             

Отобразите сводные данные импортированных данных. Функция sqlread применяет настройки импорта к переменным в импортированных данных.

summary(data)
Variables:

    LastName: 100×1 cell array of character vectors

    Gender: 100×1 categorical

        Values:

            Female       53   
            Male         47   

    Age: 100×1 double

        Values:

            Min        25  
            Median     39  
            Max        50  

    Location: 100×1 categorical

        Values:

            County General Hospital          39    
            St. Mary s Medical Center        24    
            VA Hospital                      37    

    Height: 100×1 double

        Values:

            Min          60   
            Median       67   
            Max          72   

    Weight: 100×1 double

        Values:

            Min          111  
            Median     142.5  
            Max          202  

    Smoker: 100×1 logical

        Values:

            True        34   
            False       66   

    Systolic: 100×1 double

        Values:

            Min          109    
            Median       122    
            Max          138    

    Diastolic: 100×1 double

        Values:

            Min            68    
            Median       81.5    
            Max            99    

    SelfAssessedHealthStatus: 100×1 categorical

        Values:

            Excellent                34            
            Fair                     15            
            Good                     40            
            Poor                     11            

Удалите таблицу базы данных patients с помощью функции execute.

sqlquery = ['DROP TABLE ' tablename];
execute(conn,sqlquery)

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

close(conn)

Используйте связь ODBC, чтобы импортировать данные о продукте от таблицы базы данных в MATLAB® с помощью базы данных Microsoft® SQL Server®. Задайте схему, где таблица базы данных хранится. Затем вид и фильтр строки в импортированных данных и выполняют простой анализ данных.

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

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

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Импортируйте данные из таблицы productTable. Задайте схему базы данных dbo. Таблица data содержит данные о продукте.

tablename = 'productTable';
data = sqlread(conn,tablename,'Schema','dbo');

Отобразите первые несколько продуктов.

data(1:3,:)
ans =

  3×5 table

    productNumber    stockNumber    supplierNumber    unitCost    productDescription
    _____________    ___________    ______________    ________    __________________

          9          1.2597e+05          1003            13        'Victorian Doll' 
          8          2.1257e+05          1001             5        'Train Set'      
          7          3.8912e+05          1007            16        'Engine Kit'     

Отобразите первые несколько описаний продукта.

data.productDescription(1:3)
ans =

  3×1 cell array

    {'Victorian Doll'}
    {'Train Set'     }
    {'Engine Kit'    }

Сортировка строк в data столбцом описания продукта в алфавитном порядке.

column = 'productDescription';
data = sortrows(data,column);

Отобразите первые несколько описаний продукта после сортировки.

data.productDescription(1:3)
ans =

  3×1 cell array

    {'Building Blocks'}
    {'Convertible'    }
    {'Engine Kit'     }

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

close(conn)

Используйте связь ODBC, чтобы импортировать данные о продукте от таблицы базы данных в MATLAB® с помощью базы данных Microsoft® SQL Server®. Задайте максимальное количество строк, чтобы импортировать из таблицы базы данных.

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

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

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Импортируйте данные из таблицы productTable. Импортируйте только три строки данных из таблицы базы данных. Таблица data содержит данные о продукте.

tablename = 'productTable';
data = sqlread(conn,tablename,'MaxRows',3)
data =

  3×5 table

    productNumber    stockNumber    supplierNumber    unitCost    productDescription
    _____________    ___________    ______________    ________    __________________

          9          1.2597e+05          1003            13        'Victorian Doll' 
          8          2.1257e+05          1001             5        'Train Set'      
          7          3.8912e+05          1007            16        'Engine Kit'     

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

close(conn)

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

Этот пример использует файл outages.csv, который содержит данные об отключении электричества. Кроме того, пример использует базу данных Microsoft® SQL Server® Version 11.00.2100 и Драйвер Microsoft SQL Server 11.00.5058.

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

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

Загрузите информацию об отключении электричества в рабочую область MATLAB®.

outages = readtable("outages.csv");

Создайте таблицу базы данных outages с помощью информации об отключении электричества.

tablename = "outages";
sqlwrite(conn,tablename,outages)

Импортируйте данные в рабочее пространство MATLAB и возвратите информацию о метаданных об импортированных данных.

[data,metadata] = sqlread(conn,tablename);

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

metadata.Properties.RowNames
ans = 6×1 cell array
    {'Region'         }
    {'OutageTime'     }
    {'Loss'           }
    {'Customers'      }
    {'RestorationTime'}
    {'Cause'          }

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

metadata.VariableType
ans = 6×1 cell array
    {'char'  }
    {'char'  }
    {'double'}
    {'double'}
    {'char'  }
    {'char'  }

Просмотрите недостающее значение данных для каждой переменной в импортированных данных.

metadata.FillValue
ans = 6×1 cell array
    {0×0 char}
    {0×0 char}
    {[   NaN]}
    {[   NaN]}
    {0×0 char}
    {0×0 char}

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

metadata.MissingRows
ans = 6×1 cell array
    {  0×1 double}
    {  0×1 double}
    {604×1 double}
    {328×1 double}
    { 29×1 double}
    {  0×1 double}

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

index = metadata.MissingRows{5,1};
nullrestoration = data(index,:);
head(nullrestoration)
ans=8×6 table
      Region              OutageTime             Loss     Customers     RestorationTime          Cause       
    ___________    _________________________    ______    __________    _______________    __________________

    'SouthEast'    '2003-01-23 00:49:00.000'    530.14    2.1204e+05          ''           'winter storm'    
    'NorthEast'    '2004-09-18 05:54:00.000'         0             0          ''           'equipment fault' 
    'MidWest'      '2002-04-20 16:46:00.000'     23141           NaN          ''           'unknown'         
    'NorthEast'    '2004-09-16 19:42:00.000'      4718           NaN          ''           'unknown'         
    'SouthEast'    '2005-09-14 15:45:00.000'    1839.2    3.4144e+05          ''           'severe storm'    
    'SouthEast'    '2004-08-17 17:34:00.000'     624.1    1.7879e+05          ''           'severe storm'    
    'SouthEast'    '2006-01-28 23:13:00.000'    498.78           NaN          ''           'energy emergency'
    'West'         '2003-06-20 18:22:00.000'         0             0          ''           'energy emergency'

Удалите таблицу базы данных outages с помощью функции execute.

sqlstr = "DROP TABLE ";
sqlquery = strcat(sqlstr,tablename);
execute(conn,sqlquery)

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

close(conn)

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

свернуть все

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

Имя таблицы базы данных, заданное как вектор символов или скаляр строки обозначение имени таблицы в базе данных.

Пример: 'employees'

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

Настройки импорта базы данных, заданные как объект SQLImportOptions.

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

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

Пример: data = sqlread(conn,'inventoryTable','Catalog','toy_store','Schema','dbo','MaxRows',5) импортирует пять строк данных из таблицы базы данных inventoryTable, сохраненный в каталоге toy_store и схеме dbo.

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

Пример: 'Catalog','toy_store'

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

Имя схемы базы данных, заданное как пара, разделенная запятой, состоящая из 'Schema' и вектора символов или скаляра строки. Схема задает таблицы базы данных, представления, отношения среди таблиц и другие элементы. Каталог базы данных может иметь многочисленные схемы.

Пример: 'Schema','dbo'

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

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

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

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

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

свернуть все

Импортированные данные, возвращенные как таблица. Строки таблицы соответствуют строкам в таблице базы данных tablename. Переменные в таблице соответствуют каждому столбцу в таблице базы данных. Для столбцов, которые имеют типы данных numeric в таблице базы данных, типами данных переменных в data является double по умолчанию. Для столбцов, которые имеют текст, date, time или типы данных timestamp в таблице базы данных, типы данных переменных являются массивами ячеек из символьных векторов по умолчанию.

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

Информация о метаданных, возвращенная как таблица с этими переменными.

Имя переменнойОписание переменнойТипы данных переменных

VariableType

Тип данных каждой переменной в импортированных данных

Массив ячеек из символьных векторов

FillValue

Значение недостающих данных для каждой переменной в импортированных данных

Массив ячеек пропавших без вести значений данных

MissingRows

Индексы для каждого вхождения недостающих данных в каждой переменной импортированных данных

Массив ячеек числовых индексов

По умолчанию функция sqlread импортирует текстовые данные как вектор символов и числовые данные как двойное. FillValue является пустым символьным массивом (для текстовых данных) или NaN (для числовых данных) по умолчанию. Чтобы изменить недостающее значение данных на другое значение, используйте объект SQLImportOptions.

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

Введенный в R2018a