Contoh akses massal ke data di penyimpanan Azure Blob
Berlaku untuk:
SQL Server 2017 (14.x) dan Azure SQL Database yang lebih baru ![]()
Pernyataan BULK INSERT dan OPENROWSET dapat langsung mengakses file di penyimpanan blob Azure. Contoh berikut menggunakan data dari file CSV (nilai yang dipisahkan koma) (bernama inv-2017-01-19.csv), disimpan dalam kontainer (bernama Week3), disimpan dalam akun penyimpanan (bernama newinvoices). Jalur ke file format dapat digunakan, tetapi tidak disertakan dalam contoh-contoh ini.
Akses massal ke penyimpanan blob Azure dari SQL Server, memerlukan setidaknya SQL Server 2017 (14.x) CTP 1.1.
Penting
Semua jalur ke kontainer dan ke file pada blob adalah CASE SENSITIVE. Jika tidak benar, itu mungkin mengembalikan kesalahan seperti "Tidak dapat memuat secara massal. File "file.csv" tidak ada atau Anda tidak memiliki hak akses file."
Membuat kredensial
Semua contoh di bawah ini memerlukan kredensial lingkup database yang mereferensikan tanda tangan akses bersama.
Penting
Sumber data eksternal harus dibuat dengan kredensial lingkup database yang menggunakan SHARED ACCESS SIGNATURE identitas. Untuk membuat tanda tangan akses bersama untuk akun penyimpanan Anda, lihat properti Tanda tangan akses bersama di halaman properti akun penyimpanan, di portal Microsoft Azure. Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS). Untuk informasi selengkapnya tentang kredensial, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE.
Buat kredensial lingkup database menggunakan IDENTITY yang harus SHARED ACCESS SIGNATURE. Gunakan token SAS yang dihasilkan untuk akun penyimpanan blob. Verifikasi bahwa token SAS Anda tidak memiliki terkemuka ?, bahwa Anda memiliki setidaknya izin baca pada objek yang harus dimuat, dan bahwa periode kedaluwarsa valid (semua tanggal dalam waktu UTC).
Contohnya:
CREATE DATABASE SCOPED CREDENTIAL UploadInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-08-31T02:25:19Z&st=2019-07-30T18:25:19Z&spr=https&sig=KS51p%2BVnfUtLjMZtUTW1siyuyd2nlx294tL0mnmFsOk%3D';
Mengakses data dalam file CSV yang mereferensikan lokasi penyimpanan blob Azure
Contoh berikut menggunakan sumber data eksternal yang menunjuk ke akun penyimpanan Azure, bernama MyAzureInvoices.
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net',
CREDENTIAL = UploadInvoices
);
OPENROWSET Kemudian pernyataan menambahkan nama kontainer (week3) ke deskripsi file. File diberi nama inv-2017-01-19.csv.
SELECT * FROM OPENROWSET(
BULK 'week3/inv-2017-01-19.csv',
DATA_SOURCE = 'MyAzureInvoices',
FORMAT = 'CSV',
FORMATFILE='invoices.fmt',
FORMATFILE_DATA_SOURCE = 'MyAzureInvoices'
) AS DataFile;
Menggunakan BULK INSERT, gunakan deskripsi kontainer dan file:
BULK INSERT Colors2
FROM 'week3/inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoices',
FORMAT = 'CSV');
Mengakses data dalam file CSV yang mereferensikan kontainer di lokasi penyimpanan blob Azure
Contoh berikut menggunakan sumber data eksternal yang menunjuk ke kontainer (bernama week3) di akun penyimpanan Azure.
CREATE EXTERNAL DATA SOURCE MyAzureInvoicesContainer
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = UploadInvoices
);
OPENROWSET Kemudian pernyataan tidak menyertakan nama kontainer dalam deskripsi file:
SELECT * FROM OPENROWSET(
BULK 'inv-2017-01-19.csv',
DATA_SOURCE = 'MyAzureInvoicesContainer',
FORMAT = 'CSV',
FORMATFILE='invoices.fmt',
FORMATFILE_DATA_SOURCE = 'MyAzureInvoices'
) AS DataFile;
Menggunakan BULK INSERT, jangan gunakan nama kontainer dalam deskripsi file:
BULK INSERT Colors2
FROM 'inv-2017-01-19.csv'
WITH (DATA_SOURCE = 'MyAzureInvoicesContainer',
FORMAT = 'CSV');