如何通过SSMS和Bulk Insert将本地txt文件导入Azure SQL DB?
如何用Bulk Insert将本地文件加载到Azure SQL DB?
我明白你现在的困扰——Azure SQL DB是云服务,没办法直接访问本地电脑的文件系统,所以直接写FROM 'c:\Users\Someone\myData.txt'肯定找不到文件。下面给你两个可行的解决方案,你可以根据情况选择:
方案一:上传文件到Azure Blob存储(适合批量/自动化场景)
这是Azure官方推荐的方式,步骤如下:
- 先把
myData.txt上传到Azure Blob存储的某个容器里(可以用Azure存储资源管理器、Azure门户或者AZ命令行工具完成) - 在Azure SQL DB中创建一个数据库范围凭据,用来授权访问Blob存储(用SAS令牌会更灵活)
- 执行Bulk Insert语句,直接引用Blob的URL,示例代码如下:
-- 先创建数据库范围凭据(假设使用SAS令牌) CREATE DATABASE SCOPED CREDENTIAL BlobStorageCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '你的SAS令牌内容'; -- 执行Bulk Insert BULK INSERT 你的目标表名 FROM 'https://你的存储账户名.blob.core.windows.net/你的容器名/myData.txt' WITH ( CREDENTIAL = 'BlobStorageCredential', FIELDTERMINATOR = ',', -- 根据你的文件分隔符调整,比如制表符用'\t' ROWTERMINATOR = '\n', FIRSTROW = 2, -- 如果文件第一行是表头,就跳过第一行 TABLOCK );
方案二:用SSMS的导入数据向导(适合手动/少量数据)
如果不想写代码,用图形化工具会更简单:
- 打开SSMS,连接到你的Azure SQL DB
- 右键目标数据库 → 任务 → 导入数据
- 数据源选择「平面文件源」,然后浏览选择本地的
c:\Users\Someone\myData.txt - 跟着向导一步步配置:确认文件格式、分隔符、映射目标表字段,最后完成导入
关键说明
Azure SQL DB运行在Azure的云环境里,和你同事的本地电脑不在同一个网络,没有权限直接访问本地的C:\路径,所以直接引用本地路径是行不通的,必须通过中间存储(比如Azure Blob)或者客户端工具(SSMS向导)来中转数据。
内容的提问来源于stack exchange,提问作者CarCrazyBen
相关产品推荐
相关产品推荐

