exponenta event banner

sqlread

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

Описание

пример

data = sqlread(conn,tablename) возвращает таблицу путем импорта данных в MATLAB ® из таблицы базы данных. Выполнение этой функции эквивалентно записи SELECT * FROM tablename Инструкция SQL в 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 и 11.00.5058 драйверов Microsoft SQL Server.

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

           ExcludeDuplicates: false
          VariableNamingRule: 'modify'

               VariableNames: {'LastName', 'Gender', 'Age' ... and 7 more}
               VariableTypes: {'char', 'char', 'double' ... and 7 more}
       SelectedVariableNames: {'LastName', 'Gender', 'Age' ... and 7 more}
                  FillValues: {'', '',  NaN  ... and 7 more }

             VariableOptions: Show all 10 VariableOptions

Отображение текущих параметров импорта для переменных, выбранных в 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'
  MissingRule:     'fill' |   'fill' |   'fill' |     'fill' |   'fill' |   'fill' |   'fill' |     'fill' |      'fill' |                     'fill'
    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. Потому что 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'
  MissingRule:        'fill' |        'fill' |    'fill' |                     'fill'
    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)

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

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

datasource = "MSSQLServerAuth";
conn = database(datasource,"","");

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

conn.Message
ans =

     []

Добавление столбца в таблицу базы данных productTable. Имя столбца содержит символ, отличный от ASCII.

sqlquery = "ALTER TABLE productTable ADD tamaño varchar(30)"; 
execute(conn,sqlquery)

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

tablename = "productTable";
data = sqlread(conn,tablename);
head(data,3)
ans=3×6 table
    productNumber    stockNumber    supplierNumber    unitCost    productDescription      tama_o  
    _____________    ___________    ______________    ________    __________________    __________

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

sqlread функция преобразует имя новой переменной в символы ASCII.

Сохраните имя переменной, содержащей символ, отличный от ASCII, указав VariableNamingRule аргумент пары имя-значение. Импортируйте данные еще раз.

data = sqlread(conn,tablename, ...
    'VariableNamingRule',"preserve");
head(data,3)
ans=3×6 table
    productNumber    stockNumber    supplierNumber    unitCost    productDescription      tamaño  
    _____________    ___________    ______________    ________    __________________    __________

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

sqlread функция сохраняет символ, отличный от ASCII, в имени переменной.

Закройте подключение к базе данных.

close(conn)

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

В этом примере используется outages.csv файл, содержащий данные об отключении. В примере также используется база данных 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,"","");

Загрузите информацию об отключении в рабочую область 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)

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

свернуть все

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

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

Пример: 'employees'

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

Параметры импорта базы данных, указанные как SQLImportOptions объект.

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. 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

Правило именования переменных, указанное как пара, разделенная запятыми, состоящая из 'VariableNamingRule' и одно из этих значений:

  • "modify" - Удаление символов, отличных от ASCII, из имен переменных sqlread функция импортирует данные.

  • "preserve" - Сохранение большинства имен переменных при sqlread функция импортирует данные. Дополнительные сведения см. в разделе Ограничения.

Пример: 'VariableNamingRule',"modify"

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

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

свернуть все

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

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

Метаданные, возвращаемые в виде таблицы с этими переменными.

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

VariableType

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

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

FillValue

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

Массив ячеек с отсутствующими значениями данных

MissingRows

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

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

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

RowNames имущества metadata содержит имена переменных в импортированных данных.

Ограничения

Аргумент пары имя-значение 'VariableNamingRule' имеет следующие ограничения:

  • sqlread функция возвращает ошибку при использовании 'VariableNamingRule' аргумент пары имя-значение с SQLImportOptions объект opts.

  • Когда 'VariableNamingRule' аргумент пары имя-значение установлен в значение 'modify':

    • Имена переменных Properties, RowNames, и VariableNames являются зарезервированными идентификаторами для table тип данных.

    • Длина каждого имени переменной должна быть меньше числа, возвращаемого namelengthmax.

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