exponenta event banner

sqlread

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

Описание

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL. База данных содержит таблицу productTable.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";

conn = postgresql(datasource,username,password);

Импорт данных из таблицы базы данных 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)

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

В этом примере используется patients.xls файл, содержащий столбцы Gender, Location, SelfAssessedHealthStatus, и Smoker. В примере используется база данных PostgreSQL версии 9.405 и драйвер libpq версии 10.12.

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";

conn = postgresql(datasource,username,password);

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

               VariableNames: {'lastname', 'gender', 'age' ... and 7 more}
               VariableTypes: {'string', 'string', 'double' ... and 7 more}
       SelectedVariableNames: {'lastname', 'gender', 'age' ... and 7 more}
                  FillValues: { <missing>,  <missing>,  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:   'string' |  'string' | 'double' |   'string' | 'double' | 'double' | 'logical' |   'double' |    'double' |                   'string'
  MissingRule:     'fill' |    'fill' |   'fill' |     'fill' |   'fill' |   'fill' |    'fill' |     'fill' |      'fill' |                     'fill'
    FillValue:  <missing> | <missing> |      NaN |  <missing> |      NaN |      NaN |         0 |        NaN |         NaN |                  <missing>

	To access sub-properties of each variable, use getoptions

Изменение типов данных для gender, location, smoker, и selfassessedhealthstatus переменных с использованием setoptions функция. Потому что gender, location, и selfassessedhealthstatus переменные указывают конечный набор повторяющихся значений, изменяют их тип данных на categorical. Потому что Smoker переменная хранит значения 0 и 1, измените тип данных на double. Затем отобразите обновленные параметры импорта.

opts = setoptions(opts,{'gender','location','selfassessedhealthstatus'}, ...
    'Type','categorical');
opts = setoptions(opts,'smoker','Type','double');

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' | 'double' |              '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        0         130          91               Fair             
    "Gonzales"     Male      48     County General Hospital        71       174        0         123          79               Good             
    "Bryant"       Female    48     County General Hospital        66       134        0         129          73               Excellent        
    "Alexander"    Male      25     County General Hospital        69       171        1         128          99               Good             
    "Russell"      Male      44     VA Hospital                    69       188        1         124          92               Good             
    "Griffin"      Male      49     County General Hospital        70       186        0         119          74               Fair             
    "Diaz"         Male      45     County General Hospital        68       172        1         136          93               Good             
    "Hayes"        Male      48     County General Hospital        66       177        0         114          86               Fair             

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

summary(data)
Variables:

    lastname: 100×1 string

    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 double

        Values:

            Min          0    
            Median       0    
            Max          1    

    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 = strcat("DROP TABLE ",tablename);
execute(conn,sqlquery)

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

close(conn)

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

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с использованием имени источника данных, имени пользователя и пароля. База данных содержит таблицу productTable.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

Импорт данных из таблицы productTable. Ограничьте количество строк, установив значение 'MaxRows' аргумент пары имя-значение для 10. data таблица содержит данные продукта.

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

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

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"     

Просмотрите первые несколько описаний продуктов.

data.productdescription(1:3)
ans = 3×1 string
    "Victorian Doll"
    "Train Set"
    "Engine Kit"

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

column = "productdescription";
data = sortrows(data,column);

Просмотрите первые несколько описаний продуктов после сортировки.

data.productdescription(1:3)
ans = 3×1 string
    "Building Blocks"
    "Engine Kit"
    "Painting Set"

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

close(conn)

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

В этом примере используется outages.csv файл, содержащий данные об отключении. В примере используется база данных PostgreSQL версии 9.405 и драйвер libpq версии 10.12.

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с использованием имени источника данных, имени пользователя и пароля.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

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

outages = readtable("outages.csv");

Создать outages таблицу базы данных с использованием информации об отключении. Используйте 'ColumnType' аргумент пары «имя-значение» для указания типов данных переменных в таблице MATLAB ®.

tablename = "outages";
sqlwrite(conn,tablename,outages, ...
    'ColumnType',["varchar(120)","timestamp","numeric(38,16)", ...
    "numeric(38,16)","timestamp","varchar(150)"])

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

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

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

metadata.Properties.RowNames
ans = 6×1 cell
    {'region'         }
    {'outagetime'     }
    {'loss'           }
    {'customers'      }
    {'restorationtime'}
    {'cause'          }

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

metadata.VariableType
ans = 6×1 cell
    {'string'  }
    {'datetime'}
    {'double'  }
    {'double'  }
    {'datetime'}
    {'string'  }

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

metadata.FillValue
ans=6×1 cell array
    {1×1 missing}
    {[NaT      ]}
    {[      NaN]}
    {[      NaN]}
    {[NaT      ]}
    {1×1 missing}

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

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"    23-Jan-2003 00:49:00    530.14    2.1204e+05          NaT          "winter storm"    
    "NorthEast"    18-Sep-2004 05:54:00         0             0          NaT          "equipment fault" 
    "MidWest"      20-Apr-2002 16:46:00     23141           NaN          NaT          "unknown"         
    "NorthEast"    16-Sep-2004 19:42:00      4718           NaN          NaT          "unknown"         
    "SouthEast"    14-Sep-2005 15:45:00    1839.2    3.4144e+05          NaT          "severe storm"    
    "SouthEast"    17-Aug-2004 17:34:00     624.1    1.7879e+05          NaT          "severe storm"    
    "SouthEast"    28-Jan-2006 23:13:00    498.78           NaN          NaT          "energy emergency"
    "West"         20-Jun-2003 18:22:00         0             0          NaT          "energy emergency"

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

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

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

close(conn)

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

свернуть все

Подключение базы данных собственного интерфейса PostgreSQL, указанное как connection объект.

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

Пример: 'employees'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

Импортированные данные, возвращенные в виде таблицы. Строки таблицы соответствуют строкам в таблице базы данных tablename. Переменные в таблице соответствуют каждому столбцу в таблице базы данных.

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

При импорте данных sqlread функция преобразует тип данных каждого столбца из базы данных PostgreSQL в тип данных MATLAB. Эта таблица сопоставляет тип данных столбца базы данных преобразованному типу данных MATLAB.

Тип данных PostgreSQLТип данных MATLAB

Boolean

logical

Smallint

double

Integer

double

Bigint

double

Decimal

double

Numeric

double

Real

double

Double precision

double

Smallserial

double

Serial

double

Bigserial

double

Money

double

Varchar

string

Char

string

Text

string

Bytea

string

Timestamp

datetime

Timestampz

datetime

Abstime

datetime

Date

datetime

Time

duration

Timez

duration

Interval

calendarDuration

Reltime

calendarDuration

Enum

categorical

Cidr

string

Inet

string

Macaddr

string

Uuid

string

Xml

string

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

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

VariableType

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

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

FillValue

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

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

MissingRows

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

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

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

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

Ограничения

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

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

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

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

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

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