Импортируйте результаты SQL-оператора в базе данных MySQL в MATLAB
возвращает все строки данных после выполнения SQL-оператора results
= fetch(conn
,sqlquery
)sqlquery
для connection
объект. fetch
импортирует данные в пакетах.
настраивает опции для того, чтобы импортировать данные от выполняемого SQL-запроса при помощи results
= fetch(conn
,sqlquery
,opts
)SQLImportOptions
объект.
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение" и любой из предыдущих комбинаций входных аргументов. Например, results
= fetch(___,Name,Value
)'MaxRows',5
импорт пять строк данных.
Импортируйте все данные о продукте от таблицы базы данных MySQL® в MATLAB® с помощью собственного интерфейса MySQL и fetch
функция. Затем определите самую высокую себестоимость единицы продукции среди продуктов в таблице.
Создайте собственное соединение с базой данных интерфейса MySQL к базе данных MySQL с помощью источника данных, имени пользователя и пароля. База данных содержит таблицу productTable
.
datasource = "MySQLNative"; username = "root"; password = "matlab"; conn = mysql(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-запроса на базе данных MySQL® с помощью собственного интерфейса MySQL. Управляйте настройками импорта путем создания SQLImportOptions
объект. Затем настройте настройки импорта для различных столбцов в SQL-запросе. Импортируйте данные с помощью fetch
функция.
Этот пример использует employees_database.mat
файл, который содержит столбцы first_name
, hire_date
, и DEPARTMENT_NAME
. Пример принимает, что вы соединяетесь с версией 5.7.22 базы данных MySQL с помощью MySQL Connector/C ++ версия драйвера 8.0.15.
Создайте собственное соединение с базой данных интерфейса MySQL к базе данных MySQL с именем источника данных, именем пользователя и паролем.
datasource = "MySQLNative"; username = "root"; password = "matlab"; conn = mysql(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' | 'DEPARTMENT_NAME' | 'MANAGER_ID' | '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","Name","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' | 'department_name' | 'MANAGER_ID' | '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
_____________ ____________________________ _______________
{'Alexander'} "2006-01-03 00:00:00.000000" IT
{'Bruce' } "2007-05-21 00:00:00.000000" IT
{'David' } "2005-06-25 00:00:00.000000" IT
{'Valli' } "2006-02-05 00:00:00.000000" IT
{'Diana' } "2007-02-07 00:00:00.000000" IT
{'John' } "2004-10-01 00:00:00.000000" Sales
{'Karen' } "2005-01-05 00:00:00.000000" Sales
{'Alberto' } "2005-03-10 00:00:00.000000" Sales
{'Gerald' } "2007-10-15 00:00:00.000000" Sales
{'Eleni' } "2008-01-29 00:00:00.000000" Sales
Удалите employees
и departments
таблицы базы данных с помощью execute
функция.
execute(conn,"DROP TABLE employees") execute(conn,"DROP TABLE departments")
Закройте соединение с базой данных.
close(conn)
Укажите, что данные возвращают формат и количество импортированных строк для результатов SQL-запроса. Импортируйте данные с помощью SQL-запроса и fetch
функция.
Этот пример принимает, что вы соединяетесь с версией 5.7.22 базы данных MySQL® с помощью MySQL Connector/C ++ версия драйвера 8.0.15.
Создайте собственное соединение с базой данных интерфейса MySQL к базе данных MySQL с именем источника данных, именем пользователя и паролем.
datasource = "MySQLNative"; username = "root"; password = "matlab"; conn = mysql(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 = struct with fields:
LastName: [5×1 string]
Gender: [5×1 string]
Age: [5×1 double]
Location: [5×1 string]
Height: [5×1 double]
Weight: [5×1 double]
Smoker: [5×1 logical]
Systolic: [5×1 double]
Diastolic: [5×1 double]
SelfAssessedHealthStatus: [5×1 string]
Удалите patients
таблица базы данных с помощью execute
функция.
sqlquery = strcat("DROP TABLE ",tablename);
execute(conn,sqlquery)
Закройте соединение с базой данных.
close(conn)
Получите информацию о метаданных при импортировании данных от SQL-запроса. Импортируйте данные с помощью fetch
функционируйте и исследуйте информацию о метаданных при помощи записи через точку.
Этот пример использует outages.csv
файл, который содержит данные об отключении электричества. Кроме того, пример принимает, что вы соединяетесь с версией 5.7.22 базы данных MySQL® с помощью MySQL Connector/C ++ версия драйвера 8.0.15.
Создайте собственное соединение с базой данных интерфейса MySQL к базе данных MySQL с именем источника данных, именем пользователя и паролем.
datasource = "MySQLNative"; username = "root"; password = "matlab"; conn = mysql(datasource,username,password);
Загрузите информацию об отключении электричества в рабочую область MATLAB®.
outages = readtable("outages.csv");
Создайте outages
таблица базы данных с помощью информации об отключении электричества. Используйте 'ColumnType'
аргумент пары "имя-значение", чтобы настроить типы данных переменных в outages
таблица.
tablename = "outages"; sqlwrite(conn,tablename,outages, ... 'ColumnType',["varchar(120)","datetime","numeric(38,16)", ... "numeric(38,16)","datetime","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}
{1208×1 double}
{ 656×1 double}
{ 58×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
— Собственный компонент MySQL® соединяет интерфейсом с соединением с базой данныхconnection
объект Собственный компонент MySQL соединяет интерфейсом с соединением с базой данных в виде 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
функция импортирует данные. Для получения дополнительной информации смотрите раздел Limitations.
"modify"
— Удалите символы non-ASCII из имен переменных когда fetch
функция импортирует данные.
Пример: 'VariableNamingRule',"modify"
Типы данных: string
results
— Данные о результатеДанные о результате, возвращенные как таблица, массив ячеек, структура или числовая матрица. Данные о результате содержат все строки данных из выполняемого SQL-оператора по умолчанию.
Используйте 'MaxRows'
аргумент пары "имя-значение", чтобы задать количество строк данных, чтобы импортировать. Используйте 'DataReturnFormat'
аргумент пары "имя-значение", чтобы задать тип данных данных о результате.
Когда выполняемый SQL-оператор не возвращает строк, данные о результате являются пустой таблицей.
Когда вы импортируете данные, fetch
функция преобразует тип данных каждого столбца от базы данных MySQL до типа данных MATLAB. Эта таблица сопоставляет тип данных столбца базы данных к конвертированному типу данных MATLAB.
MySQL Data Type | Тип данных MATLAB |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
metadata
— Информация о метаданныхИнформация о метаданных, возвращенная как таблица с этими переменными.
Имя переменной | Описание переменной | Типы данных переменных |
---|---|---|
| Тип данных каждой переменной в импортированных данных | Массив ячеек из символьных векторов |
| Значение недостающих данных для каждой переменной в импортированных данных | Массив ячеек пропавших без вести значений данных |
| Индексы для каждого вхождения недостающих данных в каждой переменной импортированных данных | Массив ячеек числовых индексов |
По умолчанию, fetch
функция импортирует текстовые данные как вектор символов и числовые данные как двойное. FillValue
пустой символьный массив (для текстовых данных) или NaN
(для числовых данных) по умолчанию. Чтобы изменить недостающее значение данных в другое значение, используйте SQLImportOptions
объект.
RowNames
свойство metadata
таблица содержит имена переменных в импортированных данных.
Аргумент пары "имя-значение" 'VariableNamingRule'
имеет эти ограничения:
fetch
функция возвращает ошибку, когда вы задаете 'VariableNamingRule'
аргумент пары "имя-значение" и набор 'DataReturnFormat'
аргумент пары "имя-значение" cellarray
Структура
, или 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
| mysql
| reset
| setoptions
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.