首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >u-sql脚本是否按顺序执行?

问u-sql脚本是否按顺序执行?
EN

Stack Overflow用户
提问于 2018-01-31 04:15:13
回答 1查看 136关注 0票数 1

我应该做增量加载和使用下面的结构。语句是否按顺序执行,即TRUNCATE永远不会在获取数据的前两条语句之前执行:

代码语言:javascript
复制
@newData = Extract ... (FROM FILE STREAM)

@existingData = SELECT * FROM dbo.TableA //this is ADLA table

@allData = SELECT * FROM @newData UNION ALL SELECT * FROM @existingData

TRUNCATE TABLE dbo.TableA;

INSERT INTO dbo.TableA SELECT * FROM @allData
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 05:28:14

需要非常清楚的是: U-SQL脚本不是逐条语句执行的。相反,它按顺序对DDL/DML/OUTPUT语句进行分组,查询表达式只是插入和输出的子树。但首先它在编译期间将数据绑定到它们的名称,因此select from TableA将绑定到数据(有点像轻量级快照),所以即使在SELECT之前执行truncate,您仍然可以从表A中读取数据(请注意,权限更改可能会影响这一点)。

此外,如果您的脚本在执行阶段失败,您应该有一个原子执行。这意味着如果插入失败,截断应该在最后撤消。

话虽如此,为什么不增量地使用INSERT并定期使用ALTER TABLE REBUILD,而不是执行上面的模式,即在每次插入时读取整个表?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48529789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档