主要内容

splitsqlquery

使用分页分割SQL查询

描述

例子

querybasket= splitsqlquery (康涅狄格州sqlquery将一个SQL查询拆分为多个SQL查询的篮子。默认情况下,篮子中的每个SQL查询批量返回100,000行。篮中SQL查询的结果数量取决于原始SQL查询结果的大小。

例子

querybasket= splitsqlquery (康涅狄格州sqlquery“SplitSize”,splitsize为篮子中每个SQL查询返回的行数指定自定义批处理大小。

例子

全部折叠

使用存储在数据库中的大量飞行数据确定最小到达延迟。在串行MATLAB®环境中访问数据库。

使用splitsqlquery函数,您可以将原始SQL查询拆分为多个SQL页面查询。方法以块的形式访问大型数据获取函数。

要运行此示例,必须配置JDBC数据源。有关更多信息,请参见configureJDBCDataSource函数。

创建到JDBC数据源的数据库连接MSSQLServerJDBCAuth.此数据源将JDBC驱动程序配置为具有Windows®身份验证的Microsoft®SQL Server®数据库。请指定空用户名和密码。

数据源=“MSSQLServerJDBCAuth”;用户名="";密码="";Conn =数据库(数据源,用户名,密码);

中选择所有列的SQL查询airlinesmall表,其中包含123,523行和29列。

sqlquery =SELECT * FROM airlinesmall

将原始SQL查询拆分为多个页面查询并显示它们。

Querybasket = splitsqlquery(conn,sqlquery)
querybasket = 2×1 string array " SELECT * FROM (SELECT * FROM airlinesu) temp ORDER BY 1 OFFSET 0 ROWS FETCH NEXT 100000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesu) temp ORDER BY 1 OFFSET 100000 ROWS FETCH NEXT 23523 ROWS ONLY"

查询篮以字符串数组的形式包含页面查询。的splitsqlquery函数使用默认行数(100,000)拆分查询。

定义airlinesdata变量。

航空数据= [];

定义最小到达延迟时间minArrDelay变量。

minArrDelay = [];

中执行SQL页查询querybasket通过使用循环,并以块的形式导入数据。在查询篮中执行SQL页查询,并使用获取函数。查找并存储每个块的本地最小到达延迟。

I = 1: length(querybasket) local_airlinesdata = fetch(conn,querybasket(I));local_minArrDelay = min(local_airlinesdata.ArrDelay);minArrDelay = [minArrDelay;local_minArrDelay];结束

从所有存储的延迟中找到最小的到达延迟。

minArrDelay = min(minArrDelay)
minArrDelay = -64

关闭数据库连接。

关上(康涅狄格州)

使用存储在数据库中的大量飞行数据确定最小到达延迟。使用并行池访问数据库。

要使用JDBC数据库连接初始化并行池,必须配置JDBC数据源。有关更多信息,请参见configureJDBCDataSource函数。

使用splitsqlquery函数,您可以将原始SQL查询拆分为多个SQL页面查询。然后,您可以通过在池中单独的worker上执行每个SQL页查询来访问大块的大数据。

导入大数据时,性能取决于SQL查询、数据量、机器规格和数据分析类型。要管理性能,请使用splitsize的输入参数。splitsqlquery函数。

如果您拥有MATLAB®并行服务器™许可证,则请使用parpool(并行计算工具箱)函数使用所选的集群配置文件,而不是gcp(并行计算工具箱)函数。

创建到JDBC数据源的数据库连接MSSQLServerJDBCAuth.此数据源将JDBC驱动程序配置为具有Windows®身份验证的Microsoft®SQL Server®数据库。请指定空用户名和密码。

数据源=“MSSQLServerJDBCAuth”;用户名="";密码="";Conn =数据库(数据源,用户名,密码);

中选择所有列的SQL查询airlinesmall表,其中包含123,523行和29列。

sqlquery =SELECT * FROM airlinesmall

将原始SQL查询拆分为多个页面查询并显示它们。指定10,000行的分割大小。

Splitsize = 10000;Querybasket = splitsqlquery(conn,sqlquery,“SplitSize”splitsize)
querybasket = 13×1的字符串数组“SELECT * (SELECT * FROM airlinesmall)临时订单1抵消0行获取下一个10000行只有”“SELECT * (SELECT * FROM airlinesmall)临时订单1抵消10000行获取下一个10000行只有”“SELECT * (SELECT * FROM airlinesmall)临时订单1抵消20000行获取下一个10000行只有”“SELECT * (SELECT * FROM airlinesmall)临时订单1抵消30000行获取下一个10000行只有”“SELECT *(从airlinesmall SELECT *)temp ORDER BY 1 OFFSET 40000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 50000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 60000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 70000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 80000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 90000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 100000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 110000 ROWS FETCH NEXT 10000 ROWS ONLY" " SELECT * FROM (SELECT * FROM airlinesmall) temp ORDER BY 1 OFFSET 120000 ROWS FETCH NEXT 3523 ROWS ONLY"

查询篮以字符串数组的形式包含页面查询。篮子中的每个SQL查询(除了最后一个查询)都返回10,000行。

关闭数据库连接。

关上(康涅狄格州)

启动并行池。

Pool = gcp;
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工人数:6)。

使用JDBC数据源初始化并行池。

c = createConnectionForPool(池,数据源,用户名,密码);

定义airlinesdata变量。

航空数据= [];

定义最小到达延迟时间minArrDelay变量。

minArrDelay = [];

使用parfor函数使用查询篮并行数据访问。

每个工人:

  • 检索数据库连接对象。

  • 从查询篮中执行SQL页查询,并在本地导入数据。

  • 求当地最小到达延误时间。

  • 存储本地最小到达延迟。

parfori = 1:长度(querybasket) conn = c.Value;Local_airlinesdata = fetch(conn,querybasket(i));local_minArrDelay = min(local_airlinesdata.ArrDelay);minArrDelay = [minArrDelay;local_minArrDelay];结束

使用存储的每个工作人员的延迟来查找最小到达延迟。

minArrDelay = min(minArrDelay)
minArrDelay = -64

关闭并行池。

删除(池)

输入参数

全部折叠

数据库连接,指定为连接对象创建。数据库函数,连接对象创建。mysql函数,或连接对象创建。postgresql函数。

SQL语句,指定为字符向量或字符串标量。

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

例子:SELECT * FROM发票对象中的所有列和行发票表格

数据类型:字符|字符串

SQL查询分割大小,指定为数值标量。指定此数字可将SQL查询划分为每个批处理的自定义行数。

如果从原始SQL查询返回的总行数小于100,000(默认值),则splitsqlquery函数返回原始的SQL查询。使用此input参数可指定批处理中较少的行数。

数据类型:

输出参数

全部折叠

SQL查询篮,作为字符串数组返回。篮子中的每个SQL查询都作为字符串数组中的字符串标量返回。

方法执行购物篮中的每个SQL查询获取函数。或者,您可以运行一个并行池,并将每个SQL查询分配给一个worker来执行。

限制

  • splitsqlquery函数只支持以下数据万博1manbetx库:

    • 微软®SQL Server®2012年及以后

    • 甲骨文®

    • MySQL®

    • PostgreSQL

    • SQLite

    • 亚马逊红移®

    • 亚马逊极光®

    • 谷歌®运行MySQL或PostgreSQL实例的云SQL

    • MariaDB®

    如果连接对象使用不受支持的数据库万博1manbetxsplitsqlquery函数显示警告并返回原始SQL查询。

  • splitsqlquery函数不支持MATLAB万博1manbetx®接口到SQLite。

版本历史

在R2017b中引入

另请参阅

||||(并行计算工具箱)|(并行计算工具箱)|(并行计算工具箱)|(并行计算工具箱)

外部网站