Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart laadt u gegevens bulksgewijs in uw toegewezen SQL-pool met behulp van de eenvoudige en flexibele COPY-instructie voor gegevensopname met hoge doorvoer. De COPY-instructie is het aanbevolen hulpmiddel voor het laden van gegevens, omdat het u in staat stelt gegevens naadloos en flexibel te laden door functionaliteit te bieden voor:
- Toestaan dat gebruikers met lagere bevoegdheden laden zonder strikte CONTROL-machtigingen voor het datawarehouse nodig te hebben
- Gebruik slechts één T-SQL-instructie zonder dat u extra databaseobjecten hoeft te maken
- Maak gebruik van een nauwkeuriger machtigingsmodel zonder dat opslagaccountsleutels beschikbaar worden gemaakt met behulp van Sas (Share Access Signatures)
- Geef een ander opslagaccount op voor de locatie van ERRORFILE (REJECTED_ROW_LOCATION)
- Standaardwaarden voor elke doelkolom aanpassen en brongegevensvelden opgeven die moeten worden geladen in specifieke doelkolommen
- Een aangepast rijeindteken opgeven voor CSV-bestanden
- Escape-reeks-, veld- en rijscheidingstekens voor CSV-bestanden
- SQL Server-datumnotaties gebruiken voor CSV-bestanden
- Jokertekens en meerdere bestanden specificeren in het opslaglocatiepad
Vereiste voorwaarden
In deze snelstart wordt ervan uitgegaan dat u al een toegewezen SQL-pool hebt. Als er nog geen toegewezen SQL-pool is gemaakt, gebruikt u de quickstart Portal - maken en verbinden.
De vereiste machtigingen instellen
-- 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>
Maak de doeltabel
In dit voorbeeld laden we gegevens uit de gegevensset voor taxi's in New York. We laden een tabel met de naam Trip die taxiritten vertegenwoordigt die binnen één jaar zijn gemaakt. Voer het volgende uit om de tabel te maken:
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
);
Voer de COPY-instructie uit
Voer de volgende COPY-instructie uit waarmee gegevens uit het Azure Blob Storage-account worden geladen in de tabel Trip.
COPY INTO [dbo].[Trip] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013/'
WITH (
FIELDTERMINATOR='|',
ROWTERMINATOR='0x0A'
) OPTION (LABEL = 'COPY: dbo.trip');
De belasting bewaken
Controleer of uw laadproces vordert door periodiek de volgende query uit te voeren:
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;
Volgende stappen
- Zie Aanbevolen procedures voor het laden van gegevens voor best practices.
- Zie Workloadisolatie voor informatie over het beheren van de resources voor uw gegevensbelastingen.