Sli*_*009 1 t-sql bulkinsert azure-sql-database
对于批量插入,我有一个数据文件和一个格式文件(xml);
这正在使用批量插入语句处理OnPremises,但是在Azure中,格式文件似乎有问题。以下是我已采取的步骤
设置存储访问
创建存储的数据库范围凭证
CREATE DATABASE SCOPED CREDENTIAL StorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'This is my secret' (Shared Access Signature Key)
Run Code Online (Sandbox Code Playgroud)
创建一个外部数据源
CREATE EXTERNAL DATA SOURCE Storage
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://<storagename>.blob.core.windows.net/<containername>',
CREDENTIAL = StorageCredential
);
Run Code Online (Sandbox Code Playgroud)
文件查询(批量插入或Openrowset)
BULK INSERT <Schema>.<Table>
FROM 'File.dat'
WITH (
DATA_SOURCE = 'Storage',
FORMATFILE = 'File.xml'
)
Run Code Online (Sandbox Code Playgroud)
要么
SELECT * FROM OPENROWSET(
BULK 'File.dat',
DATA_SOURCE = 'Storage',
FORMATFILE = 'File.xml'
) AS DataFile;
Run Code Online (Sandbox Code Playgroud)
它们都无法处理错误;
“无法批量加载,因为文件不完整或无法读取”
但是,如果我可以成功运行以下查询;
SELECT * FROM OPENROWSET(
BULK 'File.xml',
DATA_SOURCE = 'Storage',
SINGLE_NClob) AS DataFile
Run Code Online (Sandbox Code Playgroud)
我找到了答案,我将自己张贴(如果其他人也遇到此问题)。
格式文件的数据源应单独指定。我尝试了Microsoft文档中指定的方式;批量插入
但是,参数名称中有错误。它指出正确的参数是“ FORMATFILE_DATASOURCE”,但是应该是“ FORMATFILE_DATA_SOURCE”。(在底部评论)
BULK INSERT <Schema>.<Table>
FROM 'File.dat'
WITH (
DATA_SOURCE = 'Storage',
FORMATFILE = 'File.xml',
FORMATFILE_DATA_SOURCE = 'Storage'
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |