主要内容

获取

数据导入MATLAB从SQL语句执行的工作区

描述

例子

结果= fetch (康涅狄格州sqlquery返回执行SQL语句后的所有数据行sqlquery连接对象。获取支持批量导入数据。

例子

结果= fetch (康涅狄格州sqlquery选择方法自定义从执行的SQL查询导入数据的选项SQLImportOptions对象。

例子

结果= fetch (___名称,值使用一个或多个名称-值对参数和以前的任何输入参数组合指定其他选项。例如,MaxRows, 5导入5行数据。

例子

结果元数据] = fetch (___还返回元数据表,其中包含关于导入数据的元数据信息。

例子

结果= fetch (康涅狄格州pstmt返回执行SQL后的所有数据行选择事先准备好的声明中pstmt连接对象。

结果= fetch (康涅狄格州pstmt名称,值使用一个或多个名称-值对参数指定其他选项。例如,“DataReturnFormat”、“结构”将数据作为结构导入。

例子

全部折叠

从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查询的结果导入数据时,自定义导入选项。控件来控制导入选项SQLImportOptions对象。然后,为SQL查询中的不同列定制导入选项。导入数据时使用获取函数。

此示例使用employees_database.mat文件,其中包含列first_namehire_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_dateDEPARTMENT_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查询的结果指定数据返回格式和导入的行数。方法导入数据获取函数。

本例使用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准备语句,使用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)关闭(康涅狄格州)

输入参数

全部折叠

数据库连接,指定为ODBC连接对象或JDBC连接对象创建的。数据库函数。

SQL语句,指定为字符向量或字符串标量。SQL语句可以是任何有效的SQL语句,包括嵌套查询。SQL语句可以是一个存储过程,例如{调用sp_name (parm1、parm2…)}.对于返回一个或多个结果集的存储过程,请使用获取函数。对于返回输出参数的过程,使用runstoredprocedure

有关SQL查询语言的信息,请参见SQL教程

数据类型:字符|字符串

数据库导入选项,指定为SQLImportOptions对象。

SQL准备语句,指定为SQLPreparedStatement对象。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:结果=获取(康涅狄格州,sqlquery MaxRows, 50岁“DataReturnFormat”,“结构”)导入50行数据作为结构。

返回的最大行数,指定为逗号分隔的对,由“MaxRows”和一个正的数值标量。默认情况下,获取函数返回执行的SQL查询中的所有行。使用这个名称-值对参数来限制导入MATLAB的行数®

例子:MaxRows, 10

数据类型:

数据返回格式,指定为逗号分隔的对“DataReturnFormat”其中一个价值观是:

  • “表”

  • “cellarray”

  • “数字”

  • “结构”

使用“DataReturnFormat”名称-值对参数指定结果数据的数据类型结果.要为数值数据指定整数类,请使用选择输入参数。

可以使用字符向量或字符串标量指定这些值。

例子:“DataReturnFormat”、“cellarray”将数据导入为单元格数组。

变量命名规则,指定为逗号分隔的对,由“VariableNamingRule”其中一个价值观是:

  • “修改”—删除变量名中的非ascii字符获取进口数据的函数。

  • “保存”时,保留大多数变量名获取进口数据的函数。详细信息请参见限制部分。

例子:“VariableNamingRule”,“修改”

数据类型:字符串

输出参数

全部折叠

结果数据,作为表、单元格数组、结构或数值矩阵返回。默认情况下,结果数据包含执行的SQL语句中的所有数据行。

使用“MaxRows”名称-值对参数指定要导入的数据行数。使用“DataReturnFormat”名称-值对参数指定结果数据的数据类型。

当执行的SQL语句不返回任何行时,结果数据是一个空表。

元数据信息,作为包含这些变量的表返回。

变量名 变量描述 变量的数据类型

VariableType

导入数据中每个变量的数据类型

字符向量的单元格数组

FillValue

导入数据中每个变量的缺失数据的值

丢失数据值的单元格数组

MissingRows

导入数据的每个变量中每次出现缺失数据的索引

数值索引的单元格数组

默认情况下,获取函数将文本数据作为字符向量导入,并将数值数据作为双精度对象导入。FillValue是空字符数组(用于文本数据)还是(对于数值数据)默认。方法将缺少的数据值更改为另一个值SQLImportOptions对象。

RowNames财产的元数据表包含导入数据中的变量名。

限制

名称-值对参数“MaxRows”这些限制:

  • 如果你正在使用微软®访问™,不支持本机ODBC接口。

  • 并非所有数据库驱动程序都支持在查询执行前设置最大行数。对于不支持的驱动程序,修改SQL查询以限制返回的最大行数。SQL语法随驱动程序的不同而不同。有关详细信息,请参考驱动程序文档。

名称-值对参数“VariableNamingRule”这些限制:

  • 获取函数时返回错误“VariableNamingRule”名称-值对参数并设置“DataReturnFormat”的名称-值对参数cellarray结构,或数字

  • 获取方法时返回警告VariableNamingRule财产的SQLImportOptions对象“保存”并设置“DataReturnFormat”的名称-值对参数结构

  • 获取方法时返回错误“VariableNamingRule”参数的名称-值对参数SQLImportOptions对象选择

  • “VariableNamingRule”名称-值对参数设置为值“修改”

    • 变量名是保留的标识符表格数据类型:属性RowNames,VariableNames

    • 每个变量名的长度必须小于返回的数字namelengthmax

提示

  • 数据库中记录的顺序不会保持不变。使用SQL对数据进行排序命令命令你sqlquery声明。

  • Microsoft Excel®,表sqlqueryExcel工作表。默认情况下,一些工作表名称包含的象征。若要从具有此名称格式的工作表中选择数据,请使用此表单的SQL语句SELECT * FROM "Sheet1$ .”(或“美元Sheet1”).

  • 在修改数据库表之前,请确保数据库没有打开以供编辑。如果你试图编辑数据库时,它是打开的,你会收到这个MATLAB错误:

    [Vendor][ODBC Driver]数据库引擎无法锁定表“TableName”,因为它已经被其他人或进程使用。
  • PostgreSQL数据库管理系统支持多维字段,但不支持SQL选择除非指定索引,否则检索这些字段时语句将失败。

  • 有些数据库要求您包含一个符号,例如,在查询的日期前后,如下所示:

    execute(conn,'SELECT * FROM mydb WHERE mydate > #03/05/2005#')
  • 执行获取函数与选择输入参数和“DataReturnFormat”名称-值对参数设置为“数字”价值没有影响。相应的警告消息出现在命令窗口中。

选择功能

应用程序

获取函数使用命令行导入数据。要以交互方式导入数据,请使用数据库资源管理器应用程序。

版本历史

介绍了R2006b

全部展开

Baidu
map