使用 Polybase 将数据并行加载到现有表中

2023-12-02

使用 CTAS,我们可以利用 Polybase 提供的并行性将数据加载到new以高度可扩展和高性能的方式创建表。

有没有办法使用类似的方法将数据加载到existing桌子?桌子甚至可能是空的。

创建外部表并使用INSERT INTO ... SELECT * FROM ...- 我假设这通过头节点,因此不是并行的?

我知道我也可以删除该表并使用 CTAS 重新创建它,但随后我必须再次处理所有元数据(列名称、数据类型、分布等)。


您可以使用分区切换来执行此操作,但请记住不要在 Azure SQL 数据仓库中使用太多分区。请参阅“分区大小指南”here.

请记住,不支持检查约束,因此源表必须使用与目标表相同的分区方案。

带有分区和开关语法的完整示例:

-- Assume we have a file with the values 1 to 100 in it.

-- Create an external table over it; will have all records in
IF NOT EXISTS ( SELECT * FROM sys.schemas WHERE name = 'ext' )
EXEC ( 'CREATE SCHEMA ext' )
GO


-- DROP EXTERNAL TABLE ext.numbers
IF NOT EXISTS ( SELECT * FROM sys.external_tables WHERE object_id = OBJECT_ID('ext.numbers') )
CREATE EXTERNAL TABLE ext.numbers (
    number          INT             NOT NULL
    )
WITH (
    LOCATION = 'numbers.csv',
    DATA_SOURCE = eds_yourDataSource, 
    FILE_FORMAT = ff_csv
);
GO

-- Create a partitioned, internal table with the records 1 to 50
IF OBJECT_ID('dbo.numbers') IS NOT NULL DROP TABLE dbo.numbers

CREATE TABLE dbo.numbers
WITH (
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED INDEX ( number ), 
    PARTITION ( number RANGE LEFT FOR VALUES ( 50, 100, 150, 200 ) )
    )
AS 
SELECT * 
FROM ext.numbers
WHERE number Between 1 And 50;
GO

-- DBCC PDW_SHOWPARTITIONSTATS ('dbo.numbers')


-- CTAS the second half of the external table, records 51-100 into an internal one.
-- As check contraints are not available in SQL Data Warehouse, ensure the switch table
-- uses the same scheme as the original table.
IF OBJECT_ID('dbo.numbers_part2') IS NOT NULL DROP TABLE dbo.numbers_part2

CREATE TABLE dbo.numbers_part2
WITH (
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED INDEX ( number ),
    PARTITION ( number RANGE LEFT FOR VALUES ( 50, 100, 150, 200 ) )
    )
AS 
SELECT *
FROM ext.numbers
WHERE number > 50
GO


-- Partition switch it into the original table
ALTER TABLE dbo.numbers_part2 SWITCH PARTITION 2 TO dbo.numbers PARTITION 2;


SELECT *
FROM dbo.numbers
ORDER BY 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Polybase 将数据并行加载到现有表中 的相关文章

随机推荐

  • 如何禁止.NET DLL类库被引用

    如何禁止其他解决方案引用dll类库 你可以考虑添加一个StrongNameIdentityPermission到您的类库匹配强名你的程序的do希望能够与它一起使用 或者 您可以探索使用InternalsVisibleToAttribute
  • Hadoop 和 Python:禁用排序

    我意识到 当使用 Python 代码运行 Hadoop 时 映射器或减速器 不确定是哪一个 在打印输出之前对我的输出进行排序减速器 py 目前它似乎是按字母数字排序的 我想知道是否有办法完全禁用此功能 我希望程序的输出基于其打印顺序映射器
  • JQuery - 如何向某些 html 添加单个 html 标签?

    我只想插入一个在下面的文本之前 就在 LINK 之前 li a href LINK a li 所以 上面就变成了 li a href span LINK span a li 这是我的 JQuery 代码 mainnav li a prepe
  • 循环绘制和保存 PDF

    我有一个半熔化的数据框 如下所示 head final melt Group Source variable value Control Whole Kidney MZF1 0 23879 Control Whole Kidney MZF1
  • QML - 如何拥有不被剪切的弹出窗口

    我需要有一个在主窗口边界之外保持可见的弹出窗口 我在 Qt 文档中找不到任何内容 这是代码 import QtQuick 2 15 import QtQuick Window 2 2 import QtQuick Controls 2 12
  • 通用冒泡排序扩展

    public static T BubbleSort
  • 对project.pbxproj 文件中已删除框架的引用

    我最近从我的 iOS 项目中删除了一个框架 并通过依赖项管理器 CocoaPods 安装它 然而 我注意到 在检查对源代码管理的更改时 删除了对框架的一些引用 但添加了一个绝对路径 从差异中 第一行被删除 第二行添加到我的项目文件中 767
  • 如何重置 Redux 存储的状态?

    我正在使用 Redux 进行状态管理 如何将商店重置为初始状态 例如 假设我有两个用户帐户 u1 and u2 想象一下以下事件顺序 User u1登录应用程序并执行某些操作 因此我们在商店中缓存一些数据 User u1注销 User u2
  • 基于 JWT 的身份验证、验证和授权方案的 Spring Security 过滤器,举例

    Java Spring 和 Spring Security 有兴趣使用不记名令牌为我的 Web 服务实现基于 JWT 的身份验证机制 我的理解使用 Spring Security 进行身份验证和授权的正确方法是通过使用提供的 或自定义的 过
  • 设置 open_basedir 时无法使用 cURL 跟踪位置 (URL) - API 回调失败

    向 API 发布值的现有方法根据 API 文档 必须将表单发布到 API URL 方法 POST 和操作 API URL 其中包含一些输入字段和客户令牌字段 API 处理然后将响应发布到我的服务器上的callback php 文件 已修复
  • 删除 CFStringTransform 结果中的撇号

    我正在将俄语 或任何语言 字符串转换为好看的拉丁字符串 以便在 URL 中使用 例如example com obezd pedestala 我使用这段代码 CFMutableStringRef bufferRef bridge CFMuta
  • PHP 中的 SQL 查询返回 false

    我正在尝试在 PHP 中执行此查询 但它始终返回 false 我已经在 phpMyAdmin 中尝试过查询 它工作正常 所以如果有人能发现问题所在 那就太好了 另外 对于此类问题 我怎样才能获得更好的错误消息 以便我可以尝试解决问题 stm
  • 如何在不使用 NumberInt(...) 进行任何包装的情况下导出 mongodb?

    我想将mongodb导出为json 这里有一条记录 id oid 554f042c0e81bf483e4a4e2f batch 3 bz NumberInt 1 问题是当我使用 json 加载它时 json loads id oid 554
  • MS Access (MDB) 并发

    对于一个小型项目 我需要使用一个要求非常低的简单数据库 几个表 总共不超过几千条记录 2 或 3 个用户 我在 NET环境中工作 由于数据库服务器 即使是那些 Express 版本 在这种情况下似乎是一个巨大的杀伤力 一个非常简单的 MDB
  • 使用参数作为泛型类型,并为其指定默认值

    我有一个简单的课程Board带参数width height and types在构造函数中 高度和宽度始终具有类型number but types是任意类型的数组 我想做的是捕获的类型types使用泛型类型的参数
  • Javascript 正则表达式查找基本 URL

    我对 JS 中的这个正则表达式感到疯狂 var patt1 http s a z0 9 a z0 9 0 9 i 如果我给出像 http www eitb com servicios concursos 516522 这样的输入字符串 这个
  • JS 中的高阶函数

    我现在正在学习 JavaScript 我有一些问题 以下代码来自 Eloquent JavaScript 一书 function forEach array action for var i 0 i lt array length i ac
  • 将视图作为参数添加到自定义 ViewModifier

    这更多的是一个语法问题 我试图在不使用 AnyView 的情况下将视图传递到 ViewModifier 初始化程序中 目前我有一些使用 AnyView 运行的东西 但我想使用通用视图语法 就像您将 某些视图 传递到此答案中概述的视图一样 如
  • 通过字符串引用类名?

    我需要解析一些文本文件 为文本中遇到的各种实体创建对象 并将它们放入某种数据结构 例如列表 中以进行进一步处理 文本示例 laptop 17 dell weight 12 lb desktop 24 hp 我事先知道文本中可能存在哪些实体
  • 使用 Polybase 将数据并行加载到现有表中

    使用 CTAS 我们可以利用 Polybase 提供的并行性将数据加载到new以高度可扩展和高性能的方式创建表 有没有办法使用类似的方法将数据加载到existing桌子 桌子甚至可能是空的 创建外部表并使用INSERT INTO SELEC