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. The 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             

Отображение сводных данных импортированных данных. The 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. The 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. Импортируйте только три строки данных из таблицы базы данных. The 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. The 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}

The 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}

The 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 функция импортирует текстовые данные как вектор символов, а числовые как double. FillValue является пустым символьным массивом (для текстовых данных) или NaN (для числовых данных) по умолчанию. Чтобы изменить отсутствующее значение данных на другое, используйте SQLImportOptions объект.

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

Ограничения

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

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

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

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

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

Введенный в R2018a