主要内容

获取

将数据导入MATLAB从执行SQL语句的工作空间

描述

例子

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

例子

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

例子

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

例子

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

例子

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

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

例子

全部折叠

将所有产品数据从Microsoft®SQL Server®数据库表导入MATLAB®,使用连接对象。然后,确定表中产品的最高单位成本。s manbetx 845

使用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.0035e+05 1001 14 {'Building Blocks'} 5 4.0046e+05 1005 3 {'Tin Soldier' } 6 4.0088e+05 1004 8 {'Sail Boat' } 3 4.01e+05 1009 17 {'Slinky' } 10 8.8865e+05 1006 24 {'Teddy Bear' }

确定表中所有产品的最高单位成本。s manbetx 845

马克斯(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 Driver 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对象,并使用databaseImportOptions函数。该查询检索作为销售经理或程序员的雇员的所有信息。

sqlquery = [SELECT * from employees e join departments d '...'on (e.department_id = d.department_id) where job_id '...”(“IT_PROG”、“SA_MAN”)];选择= databaseImportOptions(康涅狄格州,sqlquery)
opts = SQLImportOptions with properties: ExcludeDuplicates: false variablenaminrule: 'modify' VariableNames: {'employee_id', 'first_name', 'last_name'…}变量类型:{'double', 'char', 'char'…and 13 more} SelectedVariableNames: {'employee_id', 'first_name', 'last_name'…and 13 more} FillValues: {NaN, ", "…变量选项:显示所有16个变量选项

控件中选择的变量的当前导入选项SelectedVariableNames财产的财产SQLImportOptions对象。

var = opts.SelectedVariableNames;var varOpts = getoptions(选择)
VAROPTS = 1x16 SQLVarvarifeimportionsOptions数组与属性:变量选项:(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' | 'char' | 'char' | 'char' | 'char' | 'char' | 'double' | 'double' | 'double' | 'double' | 'double' | 'double' | 'char' | 'double' | 'double' MissingRule: 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' FillValue: NaN | '' | '' | '' | '' | '' | '' | NaN | NaN | NaN | NaN | NaN | NaN | '' | NaN | NaN To access sub-properties of each variable, use 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 = 1x16 SQLVarvarifeimportionsOptions数组与属性:变量选项:(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' | 'char' | 'char' | 'char' | 'datetime' | 'char' | 'double' | 'double' | 'double' | 'double' | 'double' | 'double' | 'categorical' | 'double' | 'double' MissingRule: 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' | 'fill' FillValue: NaN |  | '' | '' | '' | NaT | '' | NaN | NaN | NaN | NaN | NaN | NaN |  | NaN | NaN To access sub-properties of each variable, use getoptions

方法选择三个修改过的变量SelectVariableNames财产。

选择。SelectedVariableNames = {“first_name”“hire_date”“department_name”};

控件导入并显示SQL查询的结果获取函数。

employees_data =获取(康涅狄格州,sqlquery选择)
employees_data =10×3表first_name hire_date department_name ___________ ___________ _______________ "Alexander" 03- january -2006 IT "Bruce" 21-May-2007 IT "David" 25- june -2005 IT "Valli" 05- february -2006 IT "Diana" 07- february -2007 IT "John" 01- october -2004 Sales "Karen" 05- january -2005 Sales "Alberto" 10-Mar-2005 Sales "Gerald" 15- october -2007 Sales "Eleni" 29- january -2008 Sales

删除员工部门使用执行函数。

执行(康涅狄格州,“删除表的员工”)执行(康涅狄格州,“DROP TABLE部门”

关闭数据库连接。

关上(康涅狄格州)

为SQL查询的结果指定数据返回格式和导入的行数。使用SQL查询和获取函数。

本例使用Microsoft®SQL Server®Version 11.00.2100数据库和Microsoft SQL Server Driver 11.00.5058。

使用Windows®身份验证创建到Microsoft SQL Server数据库的ODBC数据库连接。请指定为空的用户名和密码。

数据源='MS SQL Server Auth';康涅狄格州=数据库(数据源,);

将患者信息加载到MATLAB®工作空间中。

病人= readtable (“patients.xls”);

创建病人使用患者信息的数据库表。

表名=“病人”;sqlwrite(康涅狄格州、表、病人)

中选择所有数据病人数据库表,并从表中导入5行作为结构。使用“DataReturnFormat”名称值对参数指定将结果数据返回为结构。另外,使用“MaxRows”名称-值对参数指定五行。显示导入的数据。

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 =ALTER TABLE productTable ADD tamaño varchar(30);execute(康涅狄格州,sqlquery)

从数据库表导入数据productTable.的获取函数返回一个包含产品数据的MATLAB表。显示表中数据的前三行。

sqlquery =“选择*从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 Driver 11.00.5058。

使用Windows®身份验证创建到Microsoft SQL Server数据库的数据库连接。请指定为空的用户名和密码。

数据源=MS SQL Server Auth;康涅狄格州=数据库(数据源,"""");

将停机信息加载到MATLAB®工作空间中。

中断= readtable (“outages.csv”);

创建中断使用停机信息的数据库表。

表名=“中断”;sqlwrite(康涅狄格州、表、中断)

将数据导入MATLAB工作区,并返回关于导入数据的元数据信息。

sqlquery ="从中断中选择* ";(结果,元数据)=获取(康涅狄格州,sqlquery);

查看导入数据中变量的名称。

metadata.Properties.RowNames
ans =6×1细胞{'Region'} {'OutageTime'} {'Loss'} {'Customers'} {'RestorationTime'} {'Cause'}

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

元数据。VariableType
ans =6×1细胞{“字符”}{char的}{“双重”}{“双重”}{char的}{char的}

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

Metadata.FluctValue.
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-2016:46:00.000} 23141年南{0×0字符}{‘未知’}{“东北”}{' 2004-09-16 19:42:00.000}4718年南{0×0字符}{‘未知’}{“东南”}{' 2005-09-14 15:45:00.000}1839.2 - 3.4144 e + 05{0×0字符}{“暴风”}{“东南”}{' 2004-08-17 17:34:00.000}624.1 - 1.7879 e + 05{0×0字符}{“暴风”}{“东南”}{' 2006-01-28 23:13:00.000}498.78NaN {0×0 char} {'energy emergency'} {'West'} {'2003-06-20 18:22:00.000'} 00 {0×0 char} {'energy emergency'}

删除中断使用执行函数。

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(康涅狄格州、查询)
pstmt = SQLPreparedStatement with properties: 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、选择值)
pstmt = SQLPreparedStatement with properties: SQLQuery: "SELECT * FROM inventoryTable where inventoryDate > ?参数值:{["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,…,的家

例子:结果=获取(康涅狄格州,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接口。万博1manbetx

  • 并非所有数据库驱动程序都支持在执行查询之前设置最大万博1manbetx行数。对于不支持的驱动程万博1manbetx序,修改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万博1manbetx选择除非指定索引,否则在检索这些字段时语句会失败。

  • 一些数据库要求包含符号,例如,在查询日期之前和之后,如下:

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

选择功能

应用程序

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

兼容性的考虑

全部展开

R2018b中行为改变

R2018b中行为改变

介绍了R2006b