Mulai Cepat: Memuat data secara massal menggunakan pernyataan COPY
Dalam mulai cepat ini, Anda akan memuat data secara massal ke kumpulan SQL khusus menggunakan pernyataan 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:
- Mengizinkan pengguna dengan hak istimewa yang lebih rendah memuat tanpa memerlukan izin CONTROL yang ketat di gudang data
- Memanfaatkan hanya satu pernyataan T-SQL tanpa harus membuat objek database tambahan apa pun
- Memanfaatkan model izin yang lebih baik tanpa memperlihatkan kunci akun penyimpanan menggunakan Share Access Signatures (SAS)
- Menentukan akun penyimpanan lain untuk lokasi ERRORFILE (REJECTED_ROW_LOCATION)
- Menyesuaikan nilai default untuk setiap kolom target dan menentukan bidang data sumber untuk dimuat ke kolom target tertentu
- Menentukan terminator baris kustom untuk file CSV
- String escape, bidang, dan pemisah baris untuk file CSV
- Memanfaatkan format Tanggal SQL Server untuk file CSV
- Menentukan kartubebas dan beberapa file di jalur lokasi penyimpanan
Prasyarat
Mulai cepat ini mengasumsikan Anda sudah memiliki kumpulan SQL khusus. Jika kumpulan SQL khusus belum dibuat, gunakan mulai cepat Buat dan Sambungkan - 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>
Membuat tabel target
Dalam contoh ini, kita akan memuat data dari himpunan data taksi New York. Kita akan memuat tabel bernama Trip yang mewakili perjalanan taksi yang ditempuh dalam waktu satu tahun. Jalankan perintah berikut 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
);
Menjalankan 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 muatan
Periksa apakah muatan 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 tentang pemuatan data, lihat Praktik Terbaik untuk Memuat Data.
- Untuk informasi tentang cara mengelola sumber daya untuk pemuatan data Anda, lihat Isolasi Beban Kerja.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk