来自Macbook的TSQL“BULK INSERT”

时间:2017-09-19 03:16:15

标签: sql-server macos tsql azure bulkinsert

这些是涉及的对象:

  • 我的Macbook
  • Azure中托管的SQL Server
  • SQL Server客户端:DbVisualizermacsqlclient(如Window的Management Studio)
  • 我的Mac中位于\Users\john\persons.csv
  • 的文件

我正在尝试使用我的sql客户端执行TSQL BULK INSERT,如下所示:

BULK INSERT persons from '\users\john\persons.csv'
WITH 
  (
    DATAFILETYPE = 'char',
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\r\n'
  );

但是我收到了这个错误:

 Cannot bulk load because the file "\users\john\persons.csv" could not be opened.
 Operating system error code (null).

......我该如何解决这个问题?我应该在Macbook中使用什么文件路径?

1 个答案:

答案 0 :(得分:1)

您需要在Azure中拥有一个存储帐户才能使用批量插入。下面是步骤

<强>步骤1:

  

创建外部数据源MyAzureBlobStorage    WITH(TYPE = BLOB_STORAGE,           LOCATION =&#39; https://myazureblobstorage.blob.core.windows.net&#39;,           CREDENTIAL = MyAzureBlobStorageCredential);

<强>步骤2:
现在你需要将你的文件放在blob容器中并像下面那样访问它

BULK INSERT Product
FROM 'product.csv'
WITH (  DATA_SOURCE = 'MyAzureBlobStorage',
        FORMAT='CSV', CODEPAGE = 65001, --UTF-8 encoding
        FIRSTROW=2,
        TABLOCK); 

如果您的blob是公开的,则不需要凭据,否则您需要创建凭据

- CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some strong password';

-- 1.1.2. (optional) Create credential with Azure Blob SAS
--
-- CREATE DATABASE SCOPED CREDENTIAL MyAzureBlobStorageCredential 
-- WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- SECRET = 'sv=2015-12-11&ss=b&srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z&spr=https&sig=copyFromAzurePortal';
-- NOTE: DO NOT PUT FIRST CHARACTER '?'' IN SECRET!!!

<强>参考文献:
 sql-server-samples/samples/features/sql-bulk-load/load-from-azure-blob-storage/LoadFromAzureBlobStorage.sql