Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam panduan cepat ini, Anda akan memuat data dalam jumlah besar ke dalam kumpulan SQL yang didedikasikan menggunakan perintah COPY yang sederhana dan fleksibel untuk penyerapan data dengan throughput tinggi. Pernyataan COPY adalah utilitas pemuatan yang direkomendasikan karena memungkinkan Anda memuat data dengan lancar dan fleksibel dengan menyediakan fungsionalitas untuk:
- Izinkan pengguna dengan hak istimewa yang lebih rendah dimuat tanpa memerlukan izin CONTROL yang ketat pada gudang data
- Manfaatkan hanya satu pernyataan T-SQL tanpa harus membuat objek database tambahan
- Manfaatkan model izin yang lebih baik tanpa mengekspos kunci akun penyimpanan menggunakan Share Access Signatures (SAS)
- Tentukan akun penyimpanan yang berbeda untuk lokasi file error (REJECTED_ROW_LOCATION)
- Menyesuaikan nilai default untuk setiap kolom target dan menentukan bidang data sumber untuk dimuat ke kolom target tertentu
- Tentukan terminator baris kustom untuk file CSV
- Pelolosan string, kolom, dan pembatas baris untuk file CSV
- Memanfaatkan format Tanggal SQL Server untuk file CSV
- Tentukan karakter pengganti dan beberapa berkas pada jalur lokasi penyimpanan
Prasyarat
Panduan cepat ini mengandaikan Anda sudah memiliki kumpulan data SQL khusus. Jika kumpulan SQL khusus belum dibuat, gunakan panduan kilat Create and Connect - portal.
Menyiapkan izin yang diperlukan
-- List the permissions for your user
select princ.name
, princ.type_desc
, perm.permission_name
, perm.state_desc
, perm.class_desc
, object_name(perm.major_id)
from sys.database_principals princ
left join
sys.database_permissions perm
on perm.grantee_principal_id = princ.principal_id
where name = '<yourusername>';
--Make sure your user has the permissions to CREATE tables in the [dbo] schema
GRANT CREATE TABLE TO <yourusername>;
GRANT ALTER ON SCHEMA::dbo TO <yourusername>;
--Make sure your user has ADMINISTER DATABASE BULK OPERATIONS permissions
GRANT ADMINISTER DATABASE BULK OPERATIONS TO <yourusername>
--Make sure your user has INSERT permissions on the target table
GRANT INSERT ON <yourtable> TO <yourusername>
Buat tabel target
Dalam contoh ini, kita akan memuat data dari himpunan data taksi New York. Kami akan memuat tabel bernama Trip yang mewakili perjalanan taksi yang diambil dalam satu tahun. Jalankan yang berikut ini untuk membuat tabel:
CREATE TABLE [dbo].[Trip]
(
[DateID] int NOT NULL,
[MedallionID] int NOT NULL,
[HackneyLicenseID] int NOT NULL,
[PickupTimeID] int NOT NULL,
[DropoffTimeID] int NOT NULL,
[PickupGeographyID] int NULL,
[DropoffGeographyID] int NULL,
[PickupLatitude] float NULL,
[PickupLongitude] float NULL,
[PickupLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DropoffLatitude] float NULL,
[DropoffLongitude] float NULL,
[DropoffLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PassengerCount] int NULL,
[TripDurationSeconds] int NULL,
[TripDistanceMiles] float NULL,
[PaymentType] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[FareAmount] money NULL,
[SurchargeAmount] money NULL,
[TaxAmount] money NULL,
[TipAmount] money NULL,
[TollsAmount] money NULL,
[TotalAmount] money NULL
)
WITH
(
DISTRIBUTION = ROUND_ROBIN,
CLUSTERED COLUMNSTORE INDEX
);
Jalankan pernyataan COPY
Jalankan pernyataan COPY berikut yang akan memuat data dari akun penyimpanan blob Azure ke dalam tabel Trip.
COPY INTO [dbo].[Trip] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013/'
WITH (
FIELDTERMINATOR='|',
ROWTERMINATOR='0x0A'
) OPTION (LABEL = 'COPY: dbo.trip');
Memantau beban
Periksa apakah beban Anda mengalami kemajuan dengan menjalankan kueri berikut secara berkala:
SELECT r.[request_id]
, r.[status]
, r.resource_class
, r.command
, sum(bytes_processed) AS bytes_processed
, sum(rows_processed) AS rows_processed
FROM sys.dm_pdw_exec_requests r
JOIN sys.dm_pdw_dms_workers w
ON r.[request_id] = w.request_id
WHERE [label] = 'COPY: dbo.trip' and session_id <> session_id() and type = 'WRITER'
GROUP BY r.[request_id]
, r.[status]
, r.resource_class
, r.command;
Langkah berikutnya
- Untuk praktik terbaik pemuatan data, lihat Praktik Terbaik untuk Memuat Data.
- Untuk informasi tentang cara mengelola sumber daya untuk pemuatan data Anda, lihat Isolasi Beban Kerja.