求Azure Synapse中Bulk Insert功能对应的TSQL语句
Azure Synapse GUI Bulk Insert 底层TSQL获取及OPENROWSET报错解决
一、获取GUI Bulk Insert的底层TSQL代码
直接通过Synapse Studio就能导出GUI操作对应的TSQL脚本:
- 完成Bulk Insert的所有配置(选数据源、目标表、字段映射等)后,不要点「运行」,找到界面顶部或右下角的「脚本」按钮,点击就能导出该功能底层执行的TSQL代码。
- 如果已经运行过Bulk Insert任务,也可以在「监控」模块找到对应任务,查看活动的「输出」详情,部分场景能直接看到执行的TSQL语句。
二、修正你的OPENROWSET插入语句
你提供的代码存在语法错误,且缺少必要的数据源配置,以下是修正后的可用版本:
基础修正版(列顺序/类型完全匹配时)
INSERT INTO [schema].[table] SELECT * FROM OPENROWSET( BULK 'container/folder/filename.parquet', -- 替换为存储上的Parquet文件路径 DATA_SOURCE = 'YourADLSDataSource', -- 替换为你在Synapse中创建的外部数据源名称 FORMAT = 'PARQUET' ) AS SourceData
显式列映射版(列顺序/名称不匹配时)
INSERT INTO [schema].[table] (目标列1, 目标列2, 目标列3) SELECT 源列1, 源列2, 源列3 FROM OPENROWSET( BULK 'container/folder/filename.parquet', DATA_SOURCE = 'YourADLSDataSource', FORMAT = 'PARQUET' ) WITH ( 源列1 INT, 源列2 VARCHAR(100), 源列3 DATE ) AS SourceData
三、常见报错原因及解决
- 语法错误:你原代码中
INSERT INTO [schema].[table]后面多了一个左括号,这是直接导致报错的原因之一。 - 权限不足:确保执行TSQL的账号拥有外部数据源的访问权限(比如ADLS的Blob Contributor权限),以及目标表的INSERT权限。
- 路径/数据源错误:BULK路径要与外部数据源的根路径对应,比如外部数据源指向ADLS容器,路径就填
folder/filename.parquet;同时要确认数据源名称拼写正确。 - 列类型不兼容:Parquet文件的列类型与目标表列类型不匹配时,需要在WITH子句中显式定义匹配的类型,或在SELECT中做类型转换。
内容的提问来源于stack exchange,提问作者John Stud
相关产品推荐
相关产品推荐

