获取
数据导入MATLAB从SQL语句执行的工作区
语法
描述
例子
导入所有资料连接
对象
从Microsoft®SQL Server®数据库表导入所有产品数据到MATLAB®使用连接
对象。然后,确定表中产品中最高的单位成本。2022世界杯八强谁会赢?
使用Windows®身份验证创建到Microsoft®SQL Server®数据库的ODBC数据库连接。请指定空白的用户名和密码。数据库包含表productTable
.
数据源='MS SQL Server Auth';康涅狄格州=数据库(数据源,”,”);
检查数据库连接。如果消息
属性为空,则连接成功。
conn.Message
ans = []
导入所有数据productTable
通过使用连接
对象和SQL查询,并显示导入的数据。
sqlquery ='SELECT * FROM productTable';结果=获取(康涅狄格州,sqlquery)
结果= 10×5表productNumber stockNumber supplierNumber unitCost productDescription _____________ ___________ ______________ ________ ___________________ 9 1.2597 e + 05 1003 13{“维多利亚娃娃”}8 2.1257 e + 05年1001 5{‘火车’}7 3.8912 e + 05 1007 16{“引擎工具包”}2 4.0031 e + 05 1002 9{“绘画组”}4 4.0034 e + 05 1008 21{“空间巡洋舰”}1 4.0035 e + 05 1001 14{“积木”}5 4.0046 e + 05 1005 3{“锡士兵”}6 4.0088 e + 05 1004 8{“帆船”}3 4.01 e + 05 1009 17{“紧身”}108.8865e+05 1006 24{'泰迪熊'}
确定表中所有产品的最高单位成本。2022世界杯八强谁会赢?
马克斯(results.unitCost)
ans = 24
关闭数据库连接。
关上(康涅狄格州)
使用导入选项从SQL查询中导入数据
从数据库上SQL查询的结果导入数据时,自定义导入选项。控件来控制导入选项SQLImportOptions
对象。然后,为SQL查询中的不同列定制导入选项。导入数据时使用获取
函数。
此示例使用employees_database.mat
文件,其中包含列first_name
,hire_date
,DEPARTMENT_NAME
.该示例还使用Microsoft®SQL Server®Version 11.00.2100数据库和Microsoft SQL Server驱动程序11.00.5058。
使用Windows®认证创建到Microsoft SQL Server数据库的数据库连接。请指定空白的用户名和密码。
数据源='MS SQL Server Auth';康涅狄格州=数据库(数据源,”,”);
将员工信息加载到MATLAB®工作区中。
employeedata =负载(“employees_database.mat”);
创建员工
而且部门
使用员工信息的数据库表。
emp = employeedata.employees;部门= employeedata.departments;sqlwrite(康涅狄格州,“员工”emp) sqlwrite(康涅狄格州,“部门”、部门)
创建一个SQLImportOptions
对象使用SQL查询和databaseImportOptions
函数。该查询检索销售经理或程序员雇员的所有信息。
sqlquery = [“SELECT * from employees e join department d”...'on (e.s department_id = d.s department_id) where job_id '...”(“IT_PROG”、“SA_MAN”)];选择= databaseImportOptions(康涅狄格州,sqlquery)
opts = SQLImportOptions with properties: excludeduplates: false VariableNamingRule: 'modify' VariableNames: {'employee_id', 'first_name', 'last_name'…{'double', 'char', 'char'…{'employee_id', 'first_name', 'last_name'…FillValues: {NaN, ", "…变量选项:显示所有16个变量选项
控件中所选变量的当前导入选项SelectedVariableNames
财产的SQLImportOptions
对象。
var = opts.SelectedVariableNames;var varOpts = getoptions(选择)
varOpts = 1 x16 SQLVariableImportOptions数组属性:变量选择:(1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9)|(10)|(11)|(12)|(13)| |(14)(15)|(16)名称:“employee_id”|“first_name”|“last_name”|“电子邮件”|“phone_number”|“hire_date”|“job_id”|“工资”|“commission_pct”|“manager_id”|“department_id”|“临时性”|“department_id”|“DEPARTMENT_NAME”|“manager_id”|“LOCATION_ID”类型:“双”|“字符”|“字符”|“字符”|“字符”|“字符”|“字符”|“双重”|“双重”|“双重”|“双重”|“双重”|“双重”|“字符”|“双重”|“双重”MissingRule:“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”FillValue:南 | '' | '' | '' | '' | '' | '' | 南|南|南|南|南|南|”|南|南访问sub-properties每个变量,使用getoptions
的数据类型hire_date
,DEPARTMENT_NAME
,first_name
变量使用setoption
函数。然后,显示更新后的导入选项。因为hire_date
存储日期和时间数据,将此变量的数据类型更改为datetime
.因为DEPARTMENT_NAME
指定一组有限的重复值,将此变量的数据类型更改为分类
.另外,将此变量的名称更改为小写。因为first_name
存储文本数据,将此变量的数据类型更改为字符串
.
选择= setoption(选择,“hire_date”,“类型”,“datetime”);选择= setoption(选择,“DEPARTMENT_NAME”,“名字”,“department_name”,...“类型”,“分类”);选择= setoption(选择,“first_name”,“类型”,“字符串”);var = opts.SelectedVariableNames;var varOpts = getoptions(选择)
varOpts = 1 x16 SQLVariableImportOptions数组属性:变量选择:(1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9)|(10)|(11)|(12)|(13)| |(14)(15)|(16)名称:“employee_id”|“first_name”|“last_name”|“电子邮件”|“phone_number”|“hire_date”|“job_id”|“工资”|“commission_pct”|“manager_id”|“department_id”|“临时性”|“department_id”|“department_name”|“manager_id”|“LOCATION_ID”类型:“双”|“字符串”|“字符”|“字符”|“字符”|“datetime”|“字符”|“双重”|“双重”|“双重”|“双重”|“双重”|“双重”|“直言”|“双重”|“双重”MissingRule:“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”|“填补”FillValue:南| <失踪 > | '' | '' | '' | NaT”| |南|南|南|南|南|南| <定义> |南|南访问sub-properties每个变量,使用getoptions
方法选择三个修改的变量SelectVariableNames
财产。
选择。SelectedVariableNames = {“first_name”,“hire_date”,“department_name”};
方法导入并显示SQL查询的结果获取
函数。
employees_data =获取(康涅狄格州,sqlquery选择)
employees_data =10×3表“Alexander”03- 2006年1月- IT“Bruce”21- 2007年5月- IT“David”25- 2005年6月- IT“Valli”05- 2006年2月- IT“Diana”07- 2月-2007年2月- IT“John”01- 10月-2004年销售“Karen”05- 2005年1月- 05年销售“Alberto”05- 2005年3月- 10月销售“Gerald”2007年15- 10月-2008年1月- 29日销售“Eleni
删除员工
而且部门
数据库表使用执行
函数。
执行(康涅狄格州,“删除表的员工”)执行(康涅狄格州,“DROP TABLE部门”)
关闭数据库连接。
关上(康涅狄格州)
从SQL查询中导入数据作为结构
为SQL查询的结果指定数据返回格式和导入的行数。方法导入数据获取
函数。
本例使用Microsoft®SQL Server®Version 11.00.2100数据库和Microsoft SQL Server驱动程序11.00.5058。
使用Windows®身份验证创建到Microsoft SQL Server数据库的ODBC数据库连接。请指定空白的用户名和密码。
数据源='MS SQL Server Auth';康涅狄格州=数据库(数据源,”,”);
将患者信息加载到MATLAB®工作区中。
病人= readtable (“patients.xls”);
创建病人
数据库表使用患者信息。
表名=“病人”;sqlwrite(康涅狄格州、表、病人)
选项中的所有数据病人
数据库表,并从表中导入5行作为结构。使用“DataReturnFormat”
名称-值对参数指定将结果数据作为结构返回。同时,使用“MaxRows”
名称-值对参数指定5行。显示导入的数据。
sqlquery = [' select * from '表名);结果=获取(康涅狄格州,sqlquery“DataReturnFormat”,“结构”,...“MaxRows”5)
结果=结构体字段:姓:{5×1细胞}性别:{5×1细胞}年龄:[5×1双)地点:{5×1细胞}高度:[5×1双)重量:[5×1双]吸烟者:[5×1双]收缩压:[5×1双]舒张期:[5×1双]SelfAssessedHealthStatus:{5×1细胞}
删除病人
数据库表使用执行
函数。
sqlquery = [“删除表”表名);execute(康涅狄格州,sqlquery)
关闭数据库连接。
关上(康涅狄格州)
导入数据时保留变量名
通过使用ODBC连接,从Microsoft®SQL Server®数据库表导入产品数据到MATLAB®。该表包含一个非ascii字符的变量名。导入数据时,保留所有变量的名称。
使用Windows®身份验证创建到SQL Server数据库的ODBC数据库连接。请指定空白的用户名和密码。数据库包含表productTable
.
数据源=“MSSQLServerAuth”;康涅狄格州=数据库(数据源,"","");
检查数据库连接。如果消息
属性为空,则连接成功。
conn.Message
ans = []
向数据库表中添加一列productTable
.列名包含非ascii字符。
sqlquery =“修改表productTable ADD tamaño varchar(30)”;execute(康涅狄格州,sqlquery)
从数据库表导入数据productTable
.的获取
函数返回一个包含产品数据的MATLAB表。显示表中数据的前三行。
sqlquery =“SELECT * FROM productTable”;data =获取(康涅狄格州,sqlquery);头(数据,3)
ans =3×6表productNumber stockNumber supplierNumber unitCost productDescription tama_o _____________ ___________ ______________ ________ __________________ __________ 9 1.2597 e + 05 1003 13{“维多利亚娃娃”}{0×0字符}8 2.1257 e + 05年1001 5{‘火车’}{0×0字符}7 3.8912 e + 05 1007 16{“引擎工具包”}{0×0字符}
的获取
函数将新变量的名称转换为ASCII字符。
属性来保留包含非ascii字符的变量的名称VariableNamingRule
名称-值对的论点。重新导入数据。
data =获取(康涅狄格州,sqlquery...“VariableNamingRule”,“保存”);头(数据,3)
ans =3×6表productNumber stockNumber supplierNumber unitCost productDescription tamano _____________ ___________ ______________ ________ __________________ __________ 9 1.2597 e + 05 1003 13{“维多利亚娃娃”}{0×0字符}8 2.1257 e + 05年1001 5{‘火车’}{0×0字符}7 3.8912 e + 05 1007 16{“引擎工具包”}{0×0字符}
的获取
函数在变量名中保留非ascii字符。
关闭数据库连接。
关上(康涅狄格州)
检索导入数据的元数据信息
从SQL查询导入数据时检索元数据信息。导入数据时使用获取
使用点表示法函数和探索元数据信息。
此示例使用outages.csv
文件,其中包含停机数据。此外,该示例使用Microsoft®SQL Server®Version 11.00.2100数据库和Microsoft SQL Server驱动程序11.00.5058。
使用Windows®认证创建到Microsoft SQL Server数据库的数据库连接。请指定空白的用户名和密码。
数据源="MS SQL Server认证";康涅狄格州=数据库(数据源,"","");
将停机信息加载到MATLAB®工作区中。
中断= readtable (“outages.csv”);
创建中断
数据库表使用中断信息。
表名=“中断”;sqlwrite(康涅狄格州、表、中断)
将数据导入MATLAB工作区,并返回关于导入数据的元数据信息。
sqlquery ="SELECT * FROM outouts ";(结果,元数据)=获取(康涅狄格州,sqlquery);
查看导入数据中的变量名称。
metadata.Properties.RowNames
ans =6×1细胞{'Region'} {'OutageTime'} {'Loss'} {'Customers'} {'RestorationTime'} {'Cause'}
查看导入数据中每个变量的数据类型。
元数据。VariableType
ans =6×1细胞{“字符”}{char的}{“双重”}{“双重”}{char的}{char的}
查看导入数据中每个变量缺少的数据值。
元数据。FillValue
ans =6×1单元阵列{0×0字符}{0×0字符}{(南)}{(南)}{0×0字符}{0×0字符}
查看导入数据中每个变量缺失数据的索引。
元数据。MissingRows
ans =6×1单元阵列{0×1 double} {0×1 double} {604×1 double} {328×1 double} {29×1 double} {0×1 double}
显示包含缺失恢复时间的导入数据的前8行。数据
在第五个变量中包含恢复时间。使用数值索引查找缺少数据的行。
指数= metadata.MissingRows {5, 1};nullrestoration =结果(指数:);头(nullrestoration)
ans =8×6表地区OutageTime RestorationTime造成损失客户 _____________ ___________________________ ______ __________ _______________ ____________________ {' 东南的}{' 2003-01-23 00:49:00.000}530.14 - 2.1204 e + 05{0×0字符}{“暴风雪”}{“东北”}{' 2004-09-18 05:54:00.000}0 0{0×0字符}{“设备故障”}{“中西部”}{' 2002-04-20 16:46:00.000}23141年南{0×0字符}{‘未知’}{“东北”}{' 2004-09-16 19:42:00.000}4718年南{0×0字符}{‘未知’}{“东南”}{' 2005-09-1415:45:00.000'} 1839.2 3.4144e+05 {0×0 char}{'强风暴'}{'东南'}{'2004-08-17 17:34:00.000'}624.1 1.7879e+05 {0×0 char}{'强风暴'}{'东南'}{'2006-01-28 23:13:00.000'}498.78 NaN {0×0 char}{'能源紧急情况'}{'西'}{'2003-06-20 18:22:00.000'}00 {0×0 char}{'能源紧急情况'}
删除中断
数据库表使用执行
函数。
sqlstr =“删除表”;sqlquery = strcat (sqlstr、表);execute(康涅狄格州,sqlquery)
关闭数据库连接。
关上(康涅狄格州)
使用SQL预处理语句导入数据
创建SQL准备语句,使用JDBC数据库连接从Microsoft®SQL Server®数据库导入数据。使用选择
用于SQL查询的SQL语句。从数据库导入数据并显示结果。
使用Windows®身份验证创建到SQL Server数据库的JDBC数据库连接。请指定空白的用户名和密码。
数据源=“MSSQLServerJDBCAuth”;康涅狄格州=数据库(数据源,”,”);
创建一条SQL准备语句,用于使用JDBC数据库连接从SQL Server数据库导入数据。的问号选择
SQL语句表示为SQL准备语句。该语句从数据库表中选择所有数据inventoryTable
对于盘点日期在指定日期范围内的存货。
查询= strcat (SELECT * FROM inventoryTable,...WHERE inventoryDate > ?AND inventoryDate < ?");pstmt = databasePreparedStatement(康涅狄格州、查询)
SQLQuery: "SELECT * FROM inventoryTable where inventoryDate > ?AND inventoryDate < ?" ParameterCount: 2 ParameterTypes: ["string" "string"] ParameterValues: {[] []}
pstmt
是一个SQLPreparedStatement
具有以下属性的对象:
SQLQuery
—SQL准备语句查询ParameterCount
——参数计算ParameterTypes
——参数类型ParameterValues
——参数值
在SQL准备语句中绑定参数值。使用SQL准备语句中的数值索引选择这两个参数。指定要绑定的值为2014年1月1日到2014年12月31日之间的库存日期范围。匹配数据库中日期的格式。的bindParamValues
函数中更新值ParameterValues
财产的pstmt
对象。
选择= [1 2];值= {“2014-01-01 00:00:00.000”,...“2014-12-31 00:00:00.000”};pstmt = bindParamValues (pstmt、选择值)
SQLQuery: "SELECT * FROM inventoryTable where inventoryDate > ?AND inventoryDate < ?" ParameterCount: 2 ParameterTypes: ["string" "string"] ParameterValues: {["2014-01-01 00:00:00.000"] ["2014-12-31 00:00:00.000"]}
方法从数据库导入数据获取
函数和绑定参数值。结果包含四行数据,表示所有库存,库存日期在2014年1月1日到2014年12月31日之间。
结果=获取(康涅狄格州,pstmt)
结果=4×4表productNumber数量价格inventoryDate _____________ ________ _____ _______________________ 1700 14.5 {' 2014-09-23 09:38:34} 2 1200 9 {' 2014-07-08 22:50:45} 3 356 17 {' 2014-05-14 07:14:28} 7 6034 16 {' 2014-08-06 08:38:00 '}
关闭SQL准备语句和数据库连接。
关闭(pstmt)关闭(康涅狄格州)
输入参数
sqlquery
- - - - - -SQL语句
特征向量|字符串标量
SQL语句,指定为字符向量或字符串标量。SQL语句可以是任何有效的SQL语句,包括嵌套查询。SQL语句可以是一个存储过程,例如{调用sp_name (parm1、parm2…)}
.对于返回一个或多个结果集的存储过程,请使用获取
函数。对于返回输出参数的过程,使用runstoredprocedure
.
有关SQL查询语言的信息,请参见SQL教程.
数据类型:字符
|字符串
选择
- - - - - -数据库导入选项
SQLImportOptions
对象
数据库导入选项,指定为SQLImportOptions
对象。
pstmt
- - - - - -SQL准备语句
SQLPreparedStatement
对象
SQL准备语句,指定为SQLPreparedStatement
对象。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:结果=获取(康涅狄格州,sqlquery MaxRows, 50岁“DataReturnFormat”,“结构”)
导入50行数据作为结构。
MaxRows
- - - - - -返回的最大行数
积极的数字标量
返回的最大行数,指定为逗号分隔的对,由“MaxRows”
和一个正的数值标量。默认情况下,获取
函数返回执行的SQL查询中的所有行。使用这个名称-值对参数来限制导入MATLAB的行数®.
例子:MaxRows, 10
数据类型:双
VariableNamingRule
- - - - - -变量命名规则
“修改”
(默认)|“保存”
变量命名规则,指定为逗号分隔的对,由“VariableNamingRule”
其中一个价值观是:
“修改”
—删除变量名中的非ascii字符获取
进口数据的函数。“保存”
时,保留大多数变量名获取
进口数据的函数。详细信息请参见限制部分。
例子:“VariableNamingRule”,“修改”
数据类型:字符串
输出参数
结果
——结果数据
表(默认)|单元格数组|结构|数字矩阵
结果数据,作为表、单元格数组、结构或数值矩阵返回。默认情况下,结果数据包含执行的SQL语句中的所有数据行。
使用“MaxRows”
名称-值对参数指定要导入的数据行数。使用“DataReturnFormat”
名称-值对参数指定结果数据的数据类型。
当执行的SQL语句不返回任何行时,结果数据是一个空表。
元数据
- - - - - -元数据信息
表格
元数据信息,作为包含这些变量的表返回。
变量名 | 变量描述 | 变量的数据类型 |
---|---|---|
|
导入数据中每个变量的数据类型 |
字符向量的单元格数组 |
|
导入数据中每个变量的缺失数据的值 |
丢失数据值的单元格数组 |
|
导入数据的每个变量中每次出现缺失数据的索引 |
数值索引的单元格数组 |
默认情况下,获取
函数将文本数据作为字符向量导入,并将数值数据作为双精度对象导入。FillValue
是空字符数组(用于文本数据)还是南
(对于数值数据)默认。方法将缺少的数据值更改为另一个值SQLImportOptions
对象。
的RowNames
财产的元数据
表包含导入数据中的变量名。
限制
名称-值对参数“MaxRows”
这些限制:
如果你正在使用微软®访问™,不支持本机ODBC接口。
并非所有数据库驱动程序都支持在查询执行前设置最大行数。对于不支持的驱动程序,修改SQL查询以限制返回的最大行数。SQL语法随驱动程序的不同而不同。有关详细信息,请参考驱动程序文档。
名称-值对参数“VariableNamingRule”
这些限制:
的
获取
函数时返回错误“VariableNamingRule”
名称-值对参数并设置“DataReturnFormat”
的名称-值对参数cellarray
,结构
,或数字
.的
获取
方法时返回警告VariableNamingRule
财产的SQLImportOptions
对象“保存”
并设置“DataReturnFormat”
的名称-值对参数结构
.的
获取
方法时返回错误“VariableNamingRule”
参数的名称-值对参数SQLImportOptions
对象选择
.当
“VariableNamingRule”
名称-值对参数设置为值“修改”
:变量名是保留的标识符
表格
数据类型:属性
,RowNames
,VariableNames
.每个变量名的长度必须小于返回的数字
namelengthmax
.
提示
数据库中记录的顺序不会保持不变。使用SQL对数据进行排序
命令
命令你sqlquery
声明。为Microsoft Excel®,表
sqlquery
Excel工作表。默认情况下,一些工作表名称包含$
的象征。若要从具有此名称格式的工作表中选择数据,请使用此表单的SQL语句SELECT * FROM "Sheet1$ .
”(或“美元Sheet1”
).在修改数据库表之前,请确保数据库没有打开以供编辑。如果你试图编辑数据库时,它是打开的,你会收到这个MATLAB错误:
[Vendor][ODBC Driver]数据库引擎无法锁定表“TableName”,因为它已经被其他人或进程使用。
PostgreSQL数据库管理系统支持多维字段,但不支持SQL
选择
除非指定索引,否则检索这些字段时语句将失败。有些数据库要求您包含一个符号,例如
#
,在查询的日期前后,如下所示:execute(conn,'SELECT * FROM mydb WHERE mydate > #03/05/2005#')
执行
获取
函数与选择
输入参数和“DataReturnFormat”
名称-值对参数设置为“数字”
价值没有影响。相应的警告消息出现在命令窗口中。
选择功能
应用程序
的获取
函数使用命令行导入数据。要以交互方式导入数据,请使用数据库资源管理器应用程序。
版本历史
介绍了R2006bR2018b:获取
函数以表的形式返回结果
的获取
函数默认情况下以表格形式返回结果,而不是单元格数组。在以前的版本中,当获取
函数未找到要导入的数据,则返回包含字符向量的单元格数组没有数据的
.现在,当函数没有找到要导入的数据时,它返回一个空表。
R2018b:获取
函数忽略了“DataReturnFormat”
,“NullNumberRead”
,“NullStringRead”
数据库参数
的获取
函数忽略这些数据库首选项:
“DataReturnFormat”
“NullNumberRead”
“NullStringRead”
方法设置导入数据的数据类型“DataReturnFormat”
的名称-值对参数获取
函数。要对导入数据中缺失数据的数据类型和填充值进行更多定制,请使用SQLImportOptions
对象。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。