我正在尝试将数据库从本地SQL服务器(SQL 2008 R2)迁移到Azure SQL安装。
使用我在网上找到的迁移工具,它突出了一些Azure中无法使用功能的问题,主要是BULK INSERT。
我已经通过调用xp_cmdshell来替换此功能以使用BCP。
我现在收到的错误是xp_cmdshell在azure中不可用!
DECLARE @BCPString VARCHAR(255) = 'BCP ' + @DatabaseName + '.dbo.TEMP IN ' + @Path + ' -c -t "," -r "0x0a" -S ' + @ServerName + ' -T'
EXEC xp_cmdshell @BCPString, no_output
“当前版本的Azure SQL数据库不支持xp_cmdshell”
是否有人知道批量导入可在SQL 2008 R2和Azure SQL中使用的数据的变通方法或其他方法?
我需要执行的导入很简单,它创建了一个表,导入,然后该过程处理剩下的表,然后删除表。
答案 0 :(得分:1)
您可以在Azure中使用批量插入。首先,您必须为blob创建外部数据源,如下所示
CREATE EXTERNAL DATA SOURCE MyAzureInvoicesContainer
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = UploadInvoices
);
现在你可以像下面那样使用BULKINSERT
BULK INSERT tablename
FROM 'product.csv'
WITH ( DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT='CSV', CODEPAGE = 65001, --UTF-8 encoding
FIRSTROW=2,
TABLOCK);
Azure(未来几个月)支持SQLAZURE托管实例(目前正在预览中),这与使用SQLAGent,CLR和东西的OnPremises SQLServer相同