Импортируйте результаты оператора SQL в базу данных PostgreSQL в MATLAB
возвращает все строки данных после выполнения оператора SQL results
= fetch(conn
,sqlquery
)sqlquery
для connection
объект. fetch
импортирует данные пакетами.
настраивает опции для импорта данных из выполненного SQL-запроса при помощи results
= fetch(conn
,sqlquery
,opts
)SQLImportOptions
объект.
задает дополнительные опции, используя один или несколько аргументы пары "имя-значение" и любую из предыдущих комбинаций входных аргументов. Для примера, results
= fetch(___,Name,Value
)'MaxRows',5
импортирует пять строк данных.
Импорт всех данных о продукте из таблицы базы данных PostgreSQL в MATLAB ® с помощью собственного интерфейса PostgreSQL и fetch
функция. Затем определите самую высокую удельную стоимость среди продуктов в таблице.
Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с помощью источника данных, имени пользователя и пароля. База данных содержит таблицу productTable
.
datasource = "PostgreSQLDataSource"; username = "dbdev"; password = "matlab"; conn = postgresql(datasource,username,password);
Импортируйте все данные из productTable
при помощи объекта подключения и SQL-запроса. Затем отобразите первые три строки импортированных данных.
sqlquery = "SELECT * FROM productTable";
data = fetch(conn,sqlquery);
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"
Определите наивысшую удельную стоимость для всех продуктов в таблице.
max(data.unitcost)
ans = 24
Закройте подключение к базе данных.
close(conn)
Настройте настройки импорта при импорте данных из результатов SQL-запроса в базе данных PostgreSQL с помощью собственного интерфейса PostgreSQL. Управляйте настройками импорта путем создания SQLImportOptions
объект. Затем настройте настройки импорта для различных столбцов в SQL-запросе. Импортируйте данные с помощью fetch
функция.
Этот пример использует employees_database.mat
файл, содержащий столбцы first_name
, hire_date
, и department_name
. В примере используется база данных PostgreSQL версии 9.405 и драйвер libpq версии 10.12.
Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с именем источника данных, именем пользователя и паролем.
datasource = "PostgreSQLDataSource"; username = "dbdev"; password = "matlab"; conn = postgresql(datasource,username,password);
Загрузите информацию о сотруднике в рабочую область MATLAB ®.
employeedata = load("employees_database.mat");
Создайте employees
и departments
таблицы базы данных с использованием информации о сотруднике.
emps = employeedata.employees; depts = employeedata.departments; sqlwrite(conn,"employees",emps) sqlwrite(conn,"departments",depts)
Создайте SQLImportOptions
объект с использованием SQL-запроса и databaseImportOptions
функция. Этот запрос извлекает всю информацию для сотрудников, являющихся менеджерами по продажам или программистами.
sqlquery = strcat("SELECT * from employees e join departments d ", ... "on (e.department_id = d.department_id) WHERE ", ... "(job_id = 'IT_PROG' or job_id = 'SA_MAN')"); opts = databaseImportOptions(conn,sqlquery)
opts = SQLImportOptions with properties: ExcludeDuplicates: false VariableNamingRule: 'preserve' VariableNames: {'employee_id', 'first_name', 'last_name' ... and 13 more} VariableTypes: {'double', 'string', 'string' ... and 13 more} SelectedVariableNames: {'employee_id', 'first_name', 'last_name' ... and 13 more} FillValues: { NaN, <missing>, <missing> ... and 13 more } VariableOptions: Show all 16 VariableOptions
Отобразите текущие настройки импорта для переменных, выбранных в SelectedVariableNames
свойство SQLImportOptions
объект.
vars = opts.SelectedVariableNames; varOpts = getoptions(opts,vars)
varOpts = 1x16 SQLVariableImportOptions array with properties: Variable Options: (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | (11) | (12) | (13) | (14) | (15) | (16) Name: 'employee_id' | 'first_name' | 'last_name' | 'email' | 'phone_number' | 'hire_date' | 'job_id' | 'salary' | 'commission_pct' | 'manager_id' | 'department_id' | 'temporary' | 'department_id_1' | 'department_name' | 'manager_id_1' | 'location_id' Type: 'double' | 'string' | 'string' | 'string' | 'string' | 'datetime' | 'string' | 'double' | 'double' | 'double' | 'double' | 'logical' | 'double' | 'string' | 'double' | 'double' MissingRule: 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' FillValue: NaN | <missing> | <missing> | <missing> | <missing> | NaT | <missing> | NaN | NaN | NaN | NaN | 0 | NaN | <missing> | NaN | NaN To access sub-properties of each variable, use getoptions
Измените типы данных для hire_date
, department_name
, и first_name
переменные, использующие setoptions
функция. Затем отобразите обновленные настройки импорта. Для эффективности измените тип данных hire_date
переменная в string
. Потому что department_name
определяет конечный набор повторяющихся значений, изменяет тип данных этой переменной на categorical
. Потому что first_name
сохраняет текстовые данные, меняет тип данных этой переменной на char
.
opts = setoptions(opts,"hire_date","Type","string"); opts = setoptions(opts,"department_name","Type","categorical"); opts = setoptions(opts,"first_name","Type","char"); vars = opts.SelectedVariableNames; varOpts = getoptions(opts,vars)
varOpts = 1x16 SQLVariableImportOptions array with properties: Variable Options: (1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) | (11) | (12) | (13) | (14) | (15) | (16) Name: 'employee_id' | 'first_name' | 'last_name' | 'email' | 'phone_number' | 'hire_date' | 'job_id' | 'salary' | 'commission_pct' | 'manager_id' | 'department_id' | 'temporary' | 'department_id_1' | 'department_name' | 'manager_id_1' | 'location_id' Type: 'double' | 'char' | 'string' | 'string' | 'string' | 'string' | 'string' | 'double' | 'double' | 'double' | 'double' | 'logical' | 'double' | 'categorical' | 'double' | 'double' MissingRule: 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' FillValue: NaN | '' | <missing> | <missing> | <missing> | <missing> | <missing> | NaN | NaN | NaN | NaN | 0 | NaN | <undefined> | NaN | NaN To access sub-properties of each variable, use getoptions
Выберите три измененные переменные с помощью SelectVariableNames
свойство.
opts.SelectedVariableNames = ["first_name","hire_date","department_name"];
Импорт и отображение результатов SQL-запроса с помощью fetch
функция.
employees_data = fetch(conn,sqlquery,opts)
employees_data=10×3 table
first_name hire_date department_name
_____________ _____________________ _______________
{'Diana' } "2007-02-07 00:00:00" IT
{'Valli' } "2006-02-05 00:00:00" IT
{'David' } "2005-06-25 00:00:00" IT
{'Bruce' } "2007-05-21 00:00:00" IT
{'Alexander'} "2006-01-03 00:00:00" IT
{'Eleni' } "2008-01-29 00:00:00" Sales
{'Gerald' } "2007-10-15 00:00:00" Sales
{'Alberto' } "2005-03-10 00:00:00" Sales
{'Karen' } "2005-01-05 00:00:00" Sales
{'John' } "2004-10-01 00:00:00" Sales
Удалите employees
и departments
таблицы базы данных с использованием execute
функция.
execute(conn,"DROP TABLE employees") execute(conn,"DROP TABLE departments")
Закройте подключение к базе данных.
close(conn)
Укажите формат возврата данных и количество импортированных строк для результатов SQL-запроса. Импортируйте данные с помощью SQL-запроса и fetch
функция.
Этот пример использует базу данных 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)
Выберите все данные из patients
таблица базы данных и импорт пяти строк из таблицы как структуры. Используйте 'DataReturnFormat'
аргумент пары "имя-значение" для задания возврата данных в качестве структуры. Кроме того, используйте 'MaxRows'
аргумент пары "имя-значение" для задания пяти строк. Отображение импортированных данных.
sqlquery = strcat("SELECT * FROM ",tablename); results = fetch(conn,sqlquery,'DataReturnFormat',"structure", ... 'MaxRows',5)
results=5×1 struct array with fields:
lastname
gender
age
location
height
weight
smoker
systolic
diastolic
selfassessedhealthstatus
Удалите patients
таблица базы данных с использованием execute
функция.
sqlquery = strcat("DROP TABLE ",tablename);
execute(conn,sqlquery)
Закройте подключение к базе данных.
close(conn)
Получение информации о метаданных при импорте данных из SQL-запроса. Импортируйте данные с помощью fetch
выполнять функцию и исследовать информацию метаданных при помощи записи через точку.
Этот пример использует 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'
аргумент пары "имя-значение" для настройки типов данных переменных в outages
таблица.
tablename = "outages"; sqlwrite(conn,tablename,outages, ... 'ColumnType',["varchar(120)","timestamp","numeric(38,16)", ... "numeric(38,16)","timestamp","varchar(150)"])
Импортируйте данные в рабочее пространство MATLAB и возвращайте метаданные об импортированных данных.
sqlquery = "SELECT * FROM outages";
[results,metadata] = fetch(conn,sqlquery);
Просмотрите имена переменных в импортированных данных.
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 = results(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)
conn
- Подключение к базе данных собственного интерфейса PostgreSQLconnection
объектПодключение к базе данных собственного интерфейса PostgreSQL, заданное как connection
объект.
sqlquery
- Оператор SQLОператор SQL, заданный как вектор символов или строковый скаляр. SQL- оператора может быть любым допустимым SQL- оператора, включая вложенные запросы. Оператор SQL может быть хранимой процедурой, например {call sp_name (parm1,parm2,...)}
. Для хранимых процедур, которые возвращают один или несколько наборов результатов, используйте fetch
функция.
Типы данных: char
| string
opts
- настройки импорта базы данныхSQLImportOptions
объектНастройки импорта базы данных, заданные как SQLImportOptions
объект.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
results = fetch(conn,sqlquery,'MaxRows',50,'DataReturnFormat','structure')
импортирует 50 строк данных как структуру.'MaxRows'
- Максимальное количество возвращаемых строкМаксимальное количество возвращаемых строк, заданное как разделенная разделенными запятой парами, состоящая из 'MaxRows'
и положительный числовой скаляр. По умолчанию, fetch
функция возвращает все строки из выполненного SQL-запроса. Используйте этот аргумент пары "имя-значение", чтобы ограничить количество строк, импортированных в MATLAB®.
Пример: 'MaxRows',10
Типы данных: double
'DataReturnFormat'
- Формат возврата данных'table'
(по умолчанию) | 'cellarray'
| 'numeric'
| 'structure'
Формат возврата данных, заданный как разделенная разделенными запятой парами, состоящая из 'DataReturnFormat'
и одно из следующих значений:
'table'
'cellarray'
'numeric'
'structure'
Используйте 'DataReturnFormat'
аргумент пары "имя-значение" для определения типа данных results
данные. Чтобы задать целочисленные классы для числовых данных, используйте opts
входной параметр.
Можно задать значение с помощью вектора символов или строкового скаляра.
Пример: 'DataReturnFormat','cellarray'
импортирует данные как массив ячеек.
'VariableNamingRule'
- Правило именования переменных"preserve"
(по умолчанию) | "modify"
Правило именования переменной, заданное как разделенная разделенными запятой парами, состоящая из 'VariableNamingRule'
и одно из следующих значений:
"preserve"
- Сохраните большинство имен переменных, когда fetch
функция импортирует данные. Для получения дополнительной информации см. раздел «Ограничения».
"modify"
- Удалите символы, отличные от ASCII, из имен переменных, когда fetch
функция импортирует данные.
Пример: 'VariableNamingRule',"modify"
Типы данных: string
results
- Данные о результатахРезультат данных, возвращенный как таблица, массив ячеек, структура или числовая матрица. По умолчанию результаты содержат все строки данных из выполненного оператора SQL.
Используйте 'MaxRows'
аргумент пары "имя-значение" для определения количества строк данных для импорта. Используйте 'DataReturnFormat'
аргумент пары "имя-значение" для определения типа данных результатов.
Когда выполненный оператор SQL не возвращает никаких строк, данные результата являются пустой таблицей.
Когда вы импортируете данные, fetch
функция преобразует тип данных каждого столбца из базы данных PostgreSQL в тип данных MATLAB. Эта таблица сопоставляет тип данных столбца базы данных с преобразованным типом данных MATLAB.
Тип данных PostgreSQL | Тип данных MATLAB |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
metadata
- Информация о метаданныхСведения о метаданных, возвращенные как таблица с этими переменными.
Имя переменной | Описание переменной | Типы данных переменных |
---|---|---|
| Тип данных каждой переменной в импортированных данных | Массив ячеек из символьных векторов |
| Значение отсутствующих данных для каждой переменной в импортированных данных | Массив ячеек с отсутствующими значениями данных |
| Индексы для каждого вхождения отсутствующих данных в каждой переменной импортированных данных | Массив ячеек из числовых индексов |
По умолчанию, fetch
функция импортирует текстовые данные как вектор символов, а числовые как double. FillValue
является пустым символьным массивом (для текстовых данных) или NaN
(для числовых данных) по умолчанию. Чтобы изменить отсутствующее значение данных на другое, используйте SQLImportOptions
объект.
The RowNames
свойство metadata
таблица содержит имена переменных в импортированных данных.
Область аргумента пары "имя-значение" 'VariableNamingRule'
имеет следующие ограничения:
fetch
функция возвращает ошибку, когда вы задаете 'VariableNamingRule'
Аргументу пары "имя-значение" и установите 'DataReturnFormat'
аргумент пары "имя-значение" в cellarray
, structure
, или numeric
.
fetch
функция возвращает предупреждение при установке VariableNamingRule
свойство SQLImportOptions
объект к "preserve"
и установите 'DataReturnFormat'
аргумент пары "имя-значение" в structure
.
fetch
функция возвращает ошибку, когда вы используете 'VariableNamingRule'
аргумент пары "имя-значение" со SQLImportOptions
opts объекта
.
Когда 'VariableNamingRule'
Аргумент пары "имя-значение" задано значение 'modify'
:
Имена переменных Properties
, RowNames
, и VariableNames
являются зарезервированными идентификаторами для table
тип данных.
Длина каждого имени переменной должна быть меньше, чем число, возвращаемое namelengthmax
.
fetch
функция импортирует данные с помощью командной строки. Чтобы импортировать данные в интерактивном режиме, используйте приложение Database Explorer.
close
| databaseImportOptions
| execute
| getoptions
| postgresql
| reset
| setoptions
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.