Zelfstudie: Hulpprogramma voor gegevensmigratie gebruiken voor het migreren van uw gegevens naar Azure Cosmos DB
VAN TOEPASSING OP:
SQL-API
Deze zelfstudie bevat instructies over het gebruik van het Azure Cosmos DB-hulpprogramma voor gegevensmigratie waarmee gegevens uit diverse bronnen kunnen worden geïmporteerd in Azure Cosmos-containers en -tabellen. U kunt importeren vanuit JSON-bestanden, CSV-bestanden, SQL, MongoDB, Azure Table Storage, Amazon DynamoDB en zelfs Azure Cosmos DB SQL-API-verzamelingen. U migreert deze gegevens naar verzamelingen en tabellen voor gebruik met Azure Cosmos DB. Het hulpprogramma voor gegevensmigratie kan ook worden gebruikt wanneer u vanaf een verzameling met één partitie migreert naar een verzameling met meerdere partities voor de SQL-API.
Notitie
Het hulpprogramma voor gegevensmigratie van Azure Cosmos DB is een open source-programma dat is ontworpen voor kleine migraties. Bekijk onze gids voor het opnemen van gegevens voor grotere migraties.
- SQL-API : u kunt een van de bronopties in het hulpprogramma voor gegevensmigratie gebruiken om op kleine schaal gegevens te importeren. Meer informatie over migratieopties voor het importeren van gegevens op grote schaal.
- Table-API : u kunt het hulpprogramma voor gegevensmigratie of AzCopy gebruiken om gegevens te importeren. Zie Gegevens importeren voor gebruik met de Azure Cosmos DB Table-API voor meer informatie.
- API van Azure Cosmos DB voor MongoDB : het hulpprogramma voor gegevensmigratie biedt geen ondersteuning voor de API van Azure Cosmos DB voor MongoDB, noch als bron noch als doel. Raadpleeg MongoDB-gegevens migreren naar een Cosmos-database met de API van Cosmos DB voor MongoDB voor instructies voor het migreren van de gegevens naar of uit verzamelingen in Azure Cosmos DB. U kunt het hulpprogramma voor gegevensmigratie nog wel gebruiken om gegevens vanaf MongoDB te exporteren naar Azure Cosmos DB SQL-API-verzamelingen voor gebruik met de SQL-API.
- Cassandra-API : het hulpprogramma voor gegevensmigratie is geen ondersteund importprogramma voor Cassandra-API-accounts. Meer informatie over migratieopties voor het importeren van gegevens in Cassandra-API
- Gremlin-API : het hulpprogramma voor gegevensmigratie is momenteel geen ondersteund importprogramma voor Gremlin API-accounts. Meer informatie over migratieopties voor het importeren van gegevens in Gremlin-API
Deze zelfstudie bestaat uit de volgende taken:
- Het hulpprogramma voor gegevensmigratie installeren
- Gegevens importeren vanuit verschillende gegevensbronnen
- Exporteren vanaf Azure Cosmos DB naar JSON
Vereisten
Voordat u de instructies in dit artikel volgt, moet u de volgende stappen uitvoeren:
Installeer Microsoft .NET Framework 4.51 of hoger.
Doorvoer vergroten: de duur van de gegevensmigratie is afhankelijk van de hoeveelheid doorvoer die u voor een afzonderlijke verzameling of een reeks verzamelingen instelt. Verhoog de doorvoer voor grotere gegevensmigraties. Nadat u de migratie hebt voltooid, verlaagt u de doorvoer om kosten te besparen. Zie prestatieniveaus en prijscategorieën in Azure Cosmos DB voor meer informatie over het verhogen van de doorvoer in de Azure-portal.
Azure Cosmos DB-resources maken: voordat u gegevens gaat migreren, maakt u vooraf alle verzamelingen vanuit de Azure-portal. Als u wilt migreren naar een Azure Cosmos DB-account dat doorvoer op databaseniveau heeft, geeft u een partitiesleutel op wanneer u de Azure Cosmos-containers maakt.
Belangrijk
Als u er zeker van wilt zijn dat het hulpprogramma voor gegevensmigratie gebruikmaakt van TLS 1.2 (Transport Layer Security) bij het verbinding maken met uw Azure Cosmos-accounts, gebruikt u .NET Framework-versie 4.7 of volgt u de instructies in dit artikel.
Overzicht
Het hulpprogramma voor gegevensmigratie is een open source-oplossing waarmee gegevens worden geïmporteerd naar Azure Cosmos DB vanuit diverse bronnen, zoals:
- JSON-bestanden
- MongoDB
- SQL Server
- CSV-bestanden
- Azure Table Storage
- Amazon DynamoDB
- HBase
- Azure Cosmos-containers
Het hulpprogramma voor importeren bevat een grafische gebruikersinterface (dtui.exe), maar kan ook worden aangestuurd vanaf de opdrachtregel (dt.exe). Er is een optie om de bijbehorende opdracht uit te voeren na het instellen van een import via de gebruikersinterface. U kunt brongegevens in tabelvorm, zoals SQL Server- of CSV-bestanden, transformeren om hiërarchische relaties (subdocumenten) te maken tijdens het importeren. Lees door voor meer informatie over bronopties, voorbeeldopdrachten om te importeren vanuit elke bron, doelopties en het weergeven van importresultaten.
Notitie
Gebruik het hulpprogramma voor migratie van Azure Cosmos DB alleen voor kleine migraties. Bekijk onze gids voor het opnemen van gegevens voor grote migraties.
Installatie
Uitvoerbaar pakket downloaden
- Download hier een zip met de meest dt.exe en dtui.exe Windows binaire bestanden
- Uitpakken in een map op uw computer en de uitgepakte map openen om de binaire bestanden te zoeken
Bouwen op basis van bron
De broncode van het hulpprogramma voor migratie is beschikbaar op GitHub in deze opslagplaats. U kunt de oplossing lokaal downloaden en compileren en vervolgens een van de volgende uitvoeren:
- Dtui.exe: grafische-interfaceversie van het hulpprogramma
- Dt.exe: opdrachtregelversie van het hulpprogramma
Gegevensbron selecteren
Nadat u het hulpprogramma hebt geïnstalleerd, is het tijd om uw gegevens te importeren. Welk type gegevens wilt u importeren?
- JSON-bestanden
- MongoDB
- MongoDB-exportbestanden
- SQL Server
- CSV-bestanden
- Azure Table storage
- Amazon DynamoDB
- Blob
- Azure Cosmos-containers
- HBase
- Azure DB Cosmos-bulkimport
- Azure DB Cosmos sequentiële recordimport
JSON-bestanden importeren
Met de importfunctie voor JSON-bronbestanden kunt u een of meer uit een enkel document bestaande JSON-bestanden importeren of JSON-bestanden die elk een matrix met JSON-documenten hebben. Wanneer u mappen toevoegt die JSON-bestanden hebben om te importeren, kunt u in submappen recursief zoeken naar bestanden.
De verbindingsreeks heeft de volgende indeling:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>
- De
<CosmosDB Endpoint>is de URI van het eindpunt. U kunt deze waarde ophalen uit de Microsoft Azure-portal. Navigeer naar uw Azure Cosmos-account. Open het deelvenster overzicht en kopieer de waarde van de URI. - De
<AccountKey>is het "wachtwoord" of de PRIMAIRE SLEUTEL. U kunt deze waarde ophalen uit de Microsoft Azure-portal. Navigeer naar uw Azure Cosmos-account. Open de deelvensters verbindingsreeksen of sleutels en kopieer de waarde "wachtwoord" of PRIMAIRE SLEUTEL. - De
<CosmosDB Database>is de naam van de CosmosDB-database.
Voorbeeld: AccountEndpoint=https://myCosmosDBName.documents.azure.com:443/;AccountKey=wJmFRYna6ttQ79ATmrTMKql8vPri84QBiHTt6oinFkZRvoe7Vv81x9sn6zlVlBY10bEPMgGM982wfYXpWXWB9w==;Database=myDatabaseName
Notitie
Gebruik de opdracht Verifiëren om te controleren of de Cosmos DB-account die in het verbindingsreeksveld is opgegeven, kan worden geopend.
Hierna volgen enkele opdrachtregelvoorbeelden om JSON-bestanden te importeren:
#Import a single JSON file
dt.exe /s:JsonFile /s.Files:.\Sessions.json /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:Sessions /t.CollectionThroughput:2500
#Import a directory of JSON files
dt.exe /s:JsonFile /s.Files:C:\TESessions\*.json /t:DocumentDBBulk /t.ConnectionString:" AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:Sessions /t.CollectionThroughput:2500
#Import a directory (including sub-directories) of JSON files
dt.exe /s:JsonFile /s.Files:C:\LastFMMusic\**\*.json /t:DocumentDBBulk /t.ConnectionString:" AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:Music /t.CollectionThroughput:2500
#Import a directory (single), directory (recursive), and individual JSON files
dt.exe /s:JsonFile /s.Files:C:\Tweets\*.*;C:\LargeDocs\**\*.*;C:\TESessions\Session48172.json;C:\TESessions\Session48173.json;C:\TESessions\Session48174.json;C:\TESessions\Session48175.json;C:\TESessions\Session48177.json /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:subs /t.CollectionThroughput:2500
#Import a single JSON file and partition the data across 4 collections
dt.exe /s:JsonFile /s.Files:D:\\CompanyData\\Companies.json /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:comp[1-4] /t.PartitionKey:name /t.CollectionThroughput:2500
Importeren vanaf MongoDB
Belangrijk
Volg deze instructies als u importeert naar een Cosmos DB-account dat is geconfigureerd met de API van Azure Cosmos DB voor MongoDB.
Met de importoptie voor MongoDB-bronnen kunt u importeren vanuit een enkele MongoDB-verzameling, eventueel documenten filteren met een query, en de documentstructuur wijzigen met een projectie.
De verbindingsreeks heeft de standaard MongoDB-indeling:
mongodb://<dbuser>:<dbpassword>@<host>:<port>/<database>
Notitie
Gebruik de opdracht Verifiëren om te controleren of de MongoDB-instantie die is opgegeven in het verbindingsreeksveld, kan worden geopend.
Voer de naam van de verzameling in van waaruit gegevens worden geïmporteerd. U kunt eventueel een bestand voor een query opgeven of leveren, zoals {pop: {$gt:5000}}, of een projectie, zoals {loc:0}, om de gegevens die u wilt importeren, te filteren en te vormen.
Hierna volgen enkele opdrachtregelvoorbeelden om te importeren vanaf MongoDB:
#Import all documents from a MongoDB collection
dt.exe /s:MongoDB /s.ConnectionString:mongodb://<dbuser>:<dbpassword>@<host>:<port>/<database> /s.Collection:zips /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:BulkZips /t.IdField:_id /t.CollectionThroughput:2500
#Import documents from a MongoDB collection which match the query and exclude the loc field
dt.exe /s:MongoDB /s.ConnectionString:mongodb://<dbuser>:<dbpassword>@<host>:<port>/<database> /s.Collection:zips /s.Query:{pop:{$gt:50000}} /s.Projection:{loc:0} /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:BulkZipsTransform /t.IdField:_id/t.CollectionThroughput:2500
MongoDB-exportbestanden
Belangrijk
Volg deze instructies als u importeert naar een Azure Cosmos DB-account met ondersteuning voor MongoDB.
Met de importoptie voor MongoDB-export van JSON-bronbestanden kunt u een of meer JSON-bestanden importeren die zijn geproduceerd vanaf het hulpprogramma mongoexport.
Wanneer u mappen toevoegt die MongoDB-export JSON-bestanden hebben om te importeren, kunt u recursief zoeken naar bestanden in submappen.
Hierna volgt een opdrachtregelvoorbeeld om te importeren vanaf MongoDB-export JSON-bestanden:
dt.exe /s:MongoDBExport /s.Files:D:\mongoemployees.json /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:employees /t.IdField:_id /t.Dates:Epoch /t.CollectionThroughput:2500
Importeren vanaf SQL Server
Met de importoptie voor SQL-bronnen kunt u importeren vanaf een afzonderlijke SQL Server-database en optioneel de records die moeten worden geïmporteerd, filteren met behulp van een query. Verder kunt u de documentstructuur wijzigen door een genest scheidingsteken op te geven (hierover later meer informatie).
De indeling van de verbindingsreeks is de standaardindeling van een SQL-verbindingsreeks.
Notitie
Gebruik de opdracht Verifiëren om te controleren of de SQL Server-instantie die is opgegeven in het verbindingsreeksveld kan worden geopend.
De eigenschap van het type genest scheidingsteken wordt gebruikt om hiërarchische relaties (subdocumenten) te maken tijdens het importeren. Kijk eens naar de volgende SQL-query:
select CAST(BusinessEntityID AS varchar) as Id, Name, AddressType as [Address.AddressType], AddressLine1 as [Address.AddressLine1], City as [Address.Location.City], StateProvinceName as [Address.Location.StateProvinceName], PostalCode as [Address.PostalCode], CountryRegionName as [Address.CountryRegionName] from Sales.vStoreWithAddresses WHERE AddressType='Main Office'
Deze retourneert de volgende (gedeeltelijke) waarden:
Let op de aliassen zoals Address.AddressType en Address.Location.StateProvinceName. Door een scheidingsteken voor nesten '.' op te geven, maakt het importprogramma Address- en Address.Location-subdocumenten tijdens het importeren. Hier volgt een voorbeeld van een resulterend document in Azure Cosmos DB:
{ "id": "956", "Naam": "Finer Verkoop ed Service", "Adres": { "AddressType": "Hoofdkantoor", "AddressLine1": "Verbindingsweg 122", "Locatie": { "Stad": "Rotterdam", "StateProvinceName": "Zuid-Holland" }, "PostalCode": "3092 AX", "CountryRegionName": "Nederland" } }
Hierna volgen enkele opdrachtregelvoorbeelden om te importeren vanaf SQL Server:
#Import records from SQL which match a query
dt.exe /s:SQL /s.ConnectionString:"Data Source=<server>;Initial Catalog=AdventureWorks;User Id=advworks;Password=<password>;" /s.Query:"select CAST(BusinessEntityID AS varchar) as Id, * from Sales.vStoreWithAddresses WHERE AddressType='Main Office'" /t:DocumentDBBulk /t.ConnectionString:" AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:Stores /t.IdField:Id /t.CollectionThroughput:2500
#Import records from sql which match a query and create hierarchical relationships
dt.exe /s:SQL /s.ConnectionString:"Data Source=<server>;Initial Catalog=AdventureWorks;User Id=advworks;Password=<password>;" /s.Query:"select CAST(BusinessEntityID AS varchar) as Id, Name, AddressType as [Address.AddressType], AddressLine1 as [Address.AddressLine1], City as [Address.Location.City], StateProvinceName as [Address.Location.StateProvinceName], PostalCode as [Address.PostalCode], CountryRegionName as [Address.CountryRegionName] from Sales.vStoreWithAddresses WHERE AddressType='Main Office'" /s.NestingSeparator:. /t:DocumentDBBulk /t.ConnectionString:" AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:StoresSub /t.IdField:Id /t.CollectionThroughput:2500
CSV-bestanden importeren en CSV converteren naar JSON
Met de importoptie voor CSV-bestandsbronnen kunt u een of meer CSV-bestanden importeren. Wanneer u mappen toevoegt die CSV-bestanden hebben om te importeren, kunt u in submappen recursief zoeken naar bestanden.
Vergelijkbaar met de SQL-bron kan de eigenschap van het type geneste scheidingsteken worden gebruikt om hiërarchische relaties (subdocumenten) te maken tijdens het importeren. Kijk eens naar de volgende CSV-koprij en -gegevensrijen:
Let op de aliassen zoals DomainInfo.Domain_Name en RedirectInfo.Redirecting. Door een scheidingsteken voor nesten '.' op te geven, maakt het importprogramma DomainInfo- en RedirectInfo-subdocumenten tijdens het importeren. Hier volgt een voorbeeld van een resulterend document in Azure Cosmos DB:
{ "DomainInfo": { "Domeinnaam": "ACUS.GOV", "Adres_domeinnaam": "https://www.ACUS.GOV" }, "Federaal Agentschap": "Administratieve Conferentie van de Verenigde Staten", "RedirectInfo": { "Omleiden": "0", "Doel_omleiding": "" }, "id": "9cc565c5-ebcd-1c03-ebd3-cc3e2ecd814d" }
Met het importprogramma wordt een poging gedaan informatie over het type af te leiden voor waarden zonder aanhalingstekens in CSV-bestanden (waarden tussen aanhalingstekens worden altijd behandeld als tekenreeksen). Typen worden geïdentificeerd in de volgende volgorde: getal, datum/tijd, Booleaanse waarde.
Er zijn nog twee dingen op te merken over CSV-import:
- Standaard worden waarden zonder aanhalingstekens altijd afgekapt voor tabs en spaties; waarden tussen aanhalingstekens blijven behouden zoals ze zijn. Dit gedrag kan worden overschreven met het selectievakje Waarden tussen aanhalingstekens afkappen of de opdrachtregeloptie /s.TrimQuoted.
- Standaard wordt een null zonder aanhalingstekens beschouwd als een null-waarde. Dit gedrag kan worden overschreven (dat wil zeggen een null zonder aanhalingstekens behandelen als een 'null'-tekenreeks) met het selectievakje NULL als tekenreeks behandelen of de opdrachtregeloptie /s.NoUnquotedNulls.
Hier volgt een voorbeeld van een opdrachtregel voor CSV-import:
dt.exe /s:CsvFile /s.Files:.\Employees.csv /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:Employees /t.IdField:EntityID /t.CollectionThroughput:2500
Importeren uit Azure Table Storage
Met de bronimportfunctie voor Azure Table Storage kunt u importeren vanaf een afzonderlijke Azure Table Storage-tabel. U kunt eventueel de tabelentiteiten filteren die moeten worden geïmporteerd.
U kunt gegevens uitvoeren die uit Azure Table Storage zijn geïmporteerd naar Azure Cosmos DB-tabellen, en entiteiten voor gebruik met de Table-API. Geïmporteerde gegevens kunnen ook worden uitgevoerd naar verzamelingen en documenten voor gebruik met de SQL-API. Table-API is echter alleen beschikbaar als doel in het opdrachtregelprogramma. U kunt niet exporteren naar Table-API met behulp van de gebruikersinterface van het hulpprogramma voor gegevensmigratie. Zie Gegevens importeren voor gebruik met de Azure Cosmos DB Table-API voor meer informatie.
De indeling van de verbindingsreeks voor Azure Table Storage is:
DefaultEndpointsProtocol=<protocol>;AccountName=<Account Name>;AccountKey=<Account Key>;
Notitie
Gebruik de opdracht Verifiëren om te controleren of de Azure Table Storage-instantie die is opgegeven in het verbindingsreeksveld kan worden geopend.
Voer de naam in van de Azure-tabel van waaruit u wilt importeren. U kunt eventueel een filter opgeven.
De importoptie voor Azure Table Storage-bron heeft de volgende aanvullende opties:
- Interne velden opnemen
- Alle: alle interne velden opnemen (PartitionKey, RowKey en Timestamp)
- Geen: alle interne velden uitsluiten
- RowKey: alleen het veld RowKey opnemen
- Kolommen selecteren
- Azure Table Storage-filters bieden geen ondersteuning voor projecties. Als u alleen specifieke Azure Table-entiteitseigenschappen wilt importeren, kunt u deze toevoegen aan de lijst Kolommen selecteren. Alle andere eigenschappen van entiteiten worden genegeerd.
Hierna volgt een opdrachtregelvoorbeeld om te importeren vanaf Azure Table Storage:
dt.exe /s:AzureTable /s.ConnectionString:"DefaultEndpointsProtocol=https;AccountName=<Account Name>;AccountKey=<Account Key>" /s.Table:metrics /s.InternalFields:All /s.Filter:"PartitionKey eq 'Partition1' and RowKey gt '00001'" /s.Projection:ObjectCount;ObjectSize /t:DocumentDBBulk /t.ConnectionString:" AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:metrics /t.CollectionThroughput:2500
Importeren vanaf Amazon DynamoDB
Met de importoptie voor Amazon DynamoDB-bronnen kunt u importeren vanuit een enkele Amazon DynamoDB-tabel. U kunt eventueel de entiteiten filteren die moeten worden geïmporteerd. Er zijn verschillende sjablonen om het instellen van een import zo eenvoudig mogelijk te maken.
De indeling van de Amazon DynamoDB-verbindingsreeks is:
ServiceURL=<Service Address>;AccessKey=<Access Key>;SecretKey=<Secret Key>;
Notitie
Gebruik de opdracht Verifiëren om te controleren of de Amazon DynamoDB-instantie die is opgegeven in het verbindingsreeksveld, kan worden geopend.
Hierna volgt een opdrachtregelvoorbeeld om te importeren vanaf Amazon DynamoDB:
dt.exe /s:DynamoDB /s.ConnectionString:ServiceURL=https://dynamodb.us-east-1.amazonaws.com;AccessKey=<accessKey>;SecretKey=<secretKey> /s.Request:"{ """TableName""": """ProductCatalog""" }" /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<Azure Cosmos DB Endpoint>;AccountKey=<Azure Cosmos DB Key>;Database=<Azure Cosmos database>;" /t.Collection:catalogCollection /t.CollectionThroughput:2500
Importeren vanaf Azure Blob-opslag
Met de bronimportfunctie voor JSON-bestanden, MongoDB-exportbestanden en CSV-bestanden kunt u een of meer bestanden importeren uit Azure Blob-opslag. Nadat u een URL van de Blob-container en de Accountsleutel hebt opgegeven, geeft u een reguliere expressie op om de te selecteren bestanden te importeren.
Hier volgt een opdrachtregelvoorbeeld om JSON-bestanden te importeren vanuit Azure Blob-opslag:
dt.exe /s:JsonFile /s.Files:"blobs://<account key>@account.blob.core.windows.net:443/importcontainer/.*" /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:doctest
Importeren vanuit een SQL-API-verzameling
Met de importoptie voor Azure Cosmos DB-bronnen kunt u gegevens importeren vanuit een of meer Azure Cosmos-containers en optioneel documenten filteren met behulp van een query.
De indeling van de Azure Cosmos DB-verbindingsreeks is:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;
U kunt de Azure Cosmos DB-verbindingsreeks ophalen op de pagina Sleutels in de Azure-portal, zoals beschreven in Een Azure Cosmos DB-account beheren. De naam van de database moet zijn toegevoegd aan de verbindingsreeks in de volgende indeling:
Database=<CosmosDB Database>;
Notitie
Gebruik de opdracht Verifiëren om te controleren of de Azure Cosmos DB-instantie die is opgegeven in het verbindingsreeksveld, kan worden geopend.
Als u wilt importeren vanuit één Azure Cosmos-container, voert u de naam in van de verzameling waaruit gegevens moeten worden geïmporteerd. Als u uit meer dan één Azure Cosmos-container wilt importeren, geeft u een reguliere expressie op die overeenkomt met een of meer verzamelingsnamen (bijvoorbeeld collection01 | collection02 | collection03). U kunt eventueel een query of een bestand opgeven om de gegevens die u wilt importeren, zowel te filteren als te vormen.
Notitie
Aangezien het verzamelingenveld reguliere expressies accepteert, moeten die tekens overeenkomstig een escape-teken krijgen als u importeert uit een enkele verzameling waarvan de naam tekens van de reguliere expressie heeft.
De importoptie voor Azure Cosmos DB-bronnen heeft de volgende geavanceerde opties:
- Interne velden opnemen: hiermee bepaalt u of Azure Cosmos DB-documentsysteemeigenschappen wel of niet moeten worden opgenomen in de export (bijvoorbeeld _rid, _ts).
- Aantal nieuwe pogingen bij fouten: hiermee bepaalt u het aantal malen dat de verbinding met Azure Cosmos DB opnieuw moet worden geprobeerd in geval van een tijdelijke fout (bijvoorbeeld onderbreking van netwerkconnectiviteit).
- Interval tussen nieuwe pogingen: hiermee bepaalt u hoe lang moet worden gewacht voordat de verbinding met Azure Cosmos DB opnieuw moet worden geprobeerd in geval van een tijdelijke fouten (bijvoorbeeld onderbreking van netwerkconnectiviteit).
- Verbindingsmodus: hiermee bepaalt u de verbindingsmodus die moet worden gebruikt met Azure Cosmos DB. De beschikbare opties zijn DirectTcp, DirectHttps en Gateway. De rechtstreekse verbindingsmodi zijn sneller, terwijl de gatewaymodus minder problemen oplevert voor de firewall aangezien deze alleen poort 443 gebruikt.
Tip
Het importprogramma gebruikt standaard verbindingsmodus DirectTcp. Als u problemen ondervindt met de firewall, schakelt u over op de verbindingsmodus Gateway, omdat hiervoor alleen poort 443 is vereist.
Hierna volgen enkele opdrachtregelvoorbeelden om te importeren vanaf Azure Cosmos DB:
#Migrate data from one Azure Cosmos container to another Azure Cosmos containers
dt.exe /s:DocumentDB /s.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /s.Collection:TEColl /t:DocumentDBBulk /t.ConnectionString:" AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:TESessions /t.CollectionThroughput:2500
#Migrate data from more than one Azure Cosmos container to a single Azure Cosmos container
dt.exe /s:DocumentDB /s.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /s.Collection:comp1|comp2|comp3|comp4 /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:singleCollection /t.CollectionThroughput:2500
#Export an Azure Cosmos container to a JSON file
dt.exe /s:DocumentDB /s.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /s.Collection:StoresSub /t:JsonFile /t.File:StoresExport.json /t.Overwrite
Tip
Het Azure Cosmos DB-gegevensimportprogramma ondersteunt ook het importeren van gegevens vanuit de Azure Cosmos DB Emulator. Bij het importeren van een lokale emulator stelt u het eindpunt in op https://localhost:<port>.
Importeren vanuit HBase
Met de importoptie voor HBase-bronnen kunt u gegevens importeren vanuit een HBase-tabel en optioneel de gegevens filteren. Er zijn verschillende sjablonen om het instellen van een import zo eenvoudig mogelijk te maken.
De indeling va de HBase Stargate-verbindingsreeks is:
ServiceURL=<server-address>;Username=<username>;Password=<password>
Notitie
Gebruik de opdracht Verifiëren om te controleren of de HBase-instantie die is opgegeven in het verbindingsreeksveld, kan worden geopend.
Hierna volgt een opdrachtregelvoorbeeld om te importeren vanuit HBase:
dt.exe /s:HBase /s.ConnectionString:ServiceURL=<server-address>;Username=<username>;Password=<password> /s.Table:Contacts /t:DocumentDBBulk /t.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;" /t.Collection:hbaseimport
Importeren naar de SQL-API (bulkimport)
Met de Azure Cosmos DB-bulkimportfunctie kunt u importeren vanuit alle beschikbare bronopties MET een opgeslagen Azure Cosmos DB-procedure voor efficiëntie. Het hulpprogramma biedt ondersteuning voor het importeren van een Azure Cosmos-container met één partitie. Het biedt ook ondersteuning voor shard-imports, waarbij gegevens worden gepartitioneerd in meer dan één Azure Cosmos-container met één partitie. Zie Partitioneren en schalen in Azure Cosmos DB voor meer informatie over gegevenspartitionering. Het hulpprogramma maakt de opgeslagen procedure, voert deze uit en verwijdert deze uit de doelverzameling(en).
De indeling van de Azure Cosmos DB-verbindingsreeks is:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;
De verbindingsreeks van het Azure Cosmos DB-account kan worden opgehaald uit de pagina Sleutels van de Azure Portal, zoals beschreven in Een account voor Azure Cosmos DB beheren. De naam van de database moet echter worden toegevoegd aan de verbindingsreeks in de volgende indeling:
Database=<CosmosDB Database>;
Notitie
Gebruik de opdracht Verifiëren om te controleren of de Azure Cosmos DB-instantie die is opgegeven in het verbindingsreeksveld, kan worden geopend.
Als u wilt importeren naar één verzameling, voert u de naam in van de verzameling waaruit gegevens moeten worden geïmporteerd en klikt u op de knop Toevoegen. Als u meer dan één verzameling wilt importeren, voert u ofwel de verzamelingsnaam afzonderlijk in of gebruikt u de volgende syntaxis om meer dan één verzameling op te geven: collection_prefix[begin index - eind index]. Houd rekening met de volgende richtlijnen wanneer u meer dan één verzameling opgeeft met de hiervoor genoemde syntaxis:
- Alleen bereiknaampatronen met gehele getallen worden ondersteund. Wanneer u bijvoorbeeld collection[0-3] opgeeft, worden de volgende verzamelingen gemaakt: collection0, collection1, collection2, collection3.
- U kunt een verkorte syntaxis gebruiken: met collection[3] maakt u dezelfde set verzamelingen die in stap 1 worden genoemd.
- Er kan meer dan een vervanging worden opgegeven. Met collection[0-1] [0-9] worden bijvoorbeeld 20 verzamelingsnamen met voorloopnullen (collection01,... 02... 03) gegenereerd.
Wanneer de naam (namen) van de verzameling is (zijn) opgegeven, kiest u de gewenste doorvoer van de verzameling(en) (400 RU’s naar 10.000 RU’s). Kies een hogere doorvoer voor de beste importprestaties. Zie Prestatieniveaus in Azure Cosmos DB voor meer informatie over prestatieniveaus.
Notitie
De instelling van de prestatiedoorvoer is alleen van toepassing op het maken van de verzameling. Als de opgegeven verzameling al bestaat, wordt de bijbehorende doorvoer niet gewijzigd.
Als u importeert naar meer dan één verzameling, ondersteunt het importprogramma hash-sharding. In dit scenario geeft u de documenteigenschap op die u wilt gebruiken als de partitiesleutel. (Als het veld Partitiesleutel leeg blijft, wordt sharding van de documenten willekeurig uitgevoerd in alle doelverzamelingen.)
U kunt eventueel opgeven welk veld in de importbron moet worden gebruikt als Azure Cosmos DB-document-id-eigenschap tijdens het importeren. Als documenten deze eigenschap niet hebben, wordt met het importprogramma een GUID gegenereerd als de id-eigenschapswaarde.
Er zijn tijdens het importeren een aantal geavanceerde opties beschikbaar. Ten eerste kunt u uw eigen opgeslagen procedure voor import opgeven, hoewel het hulpprogramma een standaard opgeslagen procedure voor bulkimport (BulkInsert.js) bevat:
Verder kunt u, wanneer u datumtypen importeert (bijvoorbeeld van SQL Server of MongoDB), kiezen tussen de drie opties voor importeren:
- Tekenreeks: behouden als een tekenreekswaarde
- Epoch: behouden als een Epoch-getalswaarde
- Beide: zowel tekenreekswaarden als Epoch-getalswaarden behouden. Met deze optie maakt u een subdocument, bijvoorbeeld: "date_joined": { "Waarde": "2013-10-21T21:17:25.2410000Z", "Epoch": 1382390245 }
De optie Azure Cosmos DB-bulkimportfunctie heeft de volgende geavanceerde opties:
- Batchgrootte: het hulpprogramma wordt standaard ingesteld op een batchgrootte van 50. Als de documenten die moeten worden geïmporteerd groot zijn, kunt u overwegen de batchgrootte te verlagen. Als de documenten die moeten worden geïmporteerd daarentegen klein zijn, kunt u overwegen de batchgrootte te verhogen.
- Maximale scriptgrootte (bytes): het hulpprogramma staat standaard ingesteld op een maximale scriptgrootte van 512 KB.
- Automatische id-generatie uitschakelen: als elk document dat moet worden geïmporteerd, een id-veld bevat, kunt u de prestatie verbeteren door deze optie te selecteren. Documenten zonder een uniek id-veld worden niet geïmporteerd.
- Bestaande documenten bijwerken: het hulpprogramma staat standaard ingesteld op het niet vervangen van bestaande documenten met id-conflicten. Als u deze optie selecteert, worden bestaande documenten met overeenkomende id overschreven. Deze functie is handig voor geplande gegevensmigraties waarmee bestaande documenten worden bijgewerkt.
- Aantal nieuwe pogingen bij fouten: geeft op hoe vaak de verbinding met Azure Cosmos DB opnieuw moet worden geprobeerd tijdens tijdelijke fouten (bijvoorbeeld onderbreking van netwerkconnectiviteit).
- Interval tussen nieuwe pogingen: hiermee bepaalt u hoe lang moet worden gewacht voordat de verbinding met Azure Cosmos DB opnieuw moet worden geprobeerd in geval van een tijdelijke fouten (bijvoorbeeld onderbreking van netwerkconnectiviteit).
- Verbindingsmodus: hiermee bepaalt u de verbindingsmodus die moet worden gebruikt met Azure Cosmos DB. De beschikbare opties zijn DirectTcp, DirectHttps en Gateway. De rechtstreekse verbindingsmodi zijn sneller, terwijl de gatewaymodus minder problemen oplevert voor de firewall aangezien deze alleen poort 443 gebruikt.
Tip
Het importprogramma gebruikt standaard verbindingsmodus DirectTcp. Als u problemen ondervindt met de firewall, schakelt u over op de verbindingsmodus Gateway, omdat hiervoor alleen poort 443 is vereist.
Importeren naar de SQL-API (sequentiële recordimport)
Met de Azure Cosmos DB-importfunctie voor sequentiële records kunt u importeren vanuit een beschikbare bronoptie op een record-voor-recordbasis. U kunt deze optie selecteren als u importeert naar een bestaande verzameling die het quotum van opgeslagen procedures heeft bereikt. Het hulpprogramma biedt ondersteuning voor het importeren naar een enkele Azure Cosmos-container (zowel met één als meerdere partities). Het biedt ook ondersteuning voor shard-imports, waarbij gegevens worden gepartitioneerd in meer dan één Azure Cosmos-container, met één partitie of met meerdere partities. Zie Partitioneren en schalen in Azure Cosmos DB voor meer informatie over gegevenspartitionering.
De indeling van de Azure Cosmos DB-verbindingsreeks is:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;
U kunt de verbindingsreeks voor het Azure Cosmos DB-account ophalen op de pagina Sleutels in de Azure-portal, zoals beschreven in Een Azure Cosmos DB-account beheren. De naam van de database moet zijn toegevoegd aan de verbindingsreeks in de volgende indeling:
Database=<Azure Cosmos database>;
Notitie
Gebruik de opdracht Verifiëren om te controleren of de Azure Cosmos DB-instantie die is opgegeven in het verbindingsreeksveld, kan worden geopend.
Als u wilt importeren naar één verzameling, voert u de naam in van de verzameling waarin gegevens moeten worden geïmporteerd, en klikt u op de knop Toevoegen. Als u naar meer dan één verzameling wilt importeren, voert u elke verzamelingsnaam afzonderlijk in. U kunt ook de volgende syntaxis gebruiken om meer dan één verzameling op te geven: collection_prefix[begin index - eind index]. Houd rekening met de volgende richtlijnen wanneer u meer dan één verzameling opgeeft met de hiervoor genoemde syntaxis:
- Alleen bereiknaampatronen met gehele getallen worden ondersteund. Wanneer u bijvoorbeeld collection[0-3] opgeeft, worden de volgende verzamelingen gemaakt: collection0, collection1, collection2, collection3.
- U kunt een verkorte syntaxis gebruiken: met collection[3] maakt u dezelfde set verzamelingen die in stap 1 worden genoemd.
- Er kan meer dan een vervanging worden opgegeven. Met collection[0-1] [0-9] worden bijvoorbeeld 20 verzamelingsnamen met voorloopnullen (collection01,... 02... 03) gemaakt.
Wanneer de naam (namen) van de verzameling is (zijn) opgegeven, kiest u de gewenste doorvoer van de verzameling(en) (400 RU’s naar 250.000 RU’s). Kies een hogere doorvoer voor de beste importprestaties. Zie Prestatieniveaus in Azure Cosmos DB voor meer informatie over prestatieniveaus. Voor elke import naar verzamelingen met doorvoer > 10.000 RU’s is een partitiesleutel vereist. Als u ervoor kiest om meer dan 250.000 RU’s te hebben, moet u een aanvraag indienen in de portal om uw account te laten vergroten.
Notitie
De doorvoerinstelling is alleen van toepassing op het maken van de verzameling of database. Als de opgegeven verzameling al bestaat, wordt de bijbehorende doorvoer niet gewijzigd.
Als u importeert naar meer dan één verzameling, ondersteunt het importprogramma hash-sharding. In dit scenario geeft u de documenteigenschap op die u wilt gebruiken als de partitiesleutel. (Als het veld Partitiesleutel leeg blijft, wordt sharding van de documenten willekeurig uitgevoerd in alle doelverzamelingen.)
U kunt eventueel opgeven welk veld in de importbron moet worden gebruikt als Azure Cosmos DB-document-id-eigenschap tijdens het importeren. (Als documenten deze eigenschap niet hebben, wordt met het importprogramma een GUID gegenereerd als de id-eigenschapswaarde.)
Er zijn tijdens het importeren een aantal geavanceerde opties beschikbaar. Ten eerste kunt u, wanneer u datumtypen importeert (bijvoorbeeld van SQL Server of MongoDB), kiezen tussen de drie opties voor importeren:
- Tekenreeks: behouden als een tekenreekswaarde
- Epoch: behouden als een Epoch-getalswaarde
- Beide: zowel tekenreekswaarden als Epoch-getalswaarden behouden. Met deze optie maakt u een subdocument, bijvoorbeeld: "date_joined": { "Waarde": "2013-10-21T21:17:25.2410000Z", "Epoch": 1382390245 }
De Azure Cosmos DB-bulkimportoptie voor sequentiële records heeft de volgende geavanceerde opties:
- Aantal parallelle aanvragen: het hulpprogramma staat standaard ingesteld op twee parallelle aanvragen. Als de documenten die moeten worden geïmporteerd klein zijn, kunt u overwegen het aantal parallelle aanvragen te verhogen. Als dit nummer te veel wordt verhoogd, wordt de import mogelijk beperkt.
- Automatische id-generatie uitschakelen: als elk document dat moet worden geïmporteerd, een id-veld bevat, kunt u de prestatie verbeteren door deze optie te selecteren. Documenten zonder een uniek id-veld worden niet geïmporteerd.
- Bestaande documenten bijwerken: het hulpprogramma staat standaard ingesteld op het niet vervangen van bestaande documenten met id-conflicten. Als u deze optie selecteert, worden bestaande documenten met overeenkomende id overschreven. Deze functie is handig voor geplande gegevensmigraties waarmee bestaande documenten worden bijgewerkt.
- Aantal nieuwe pogingen bij fouten: geeft op hoe vaak de verbinding met Azure Cosmos DB opnieuw moet worden geprobeerd tijdens tijdelijke fouten (bijvoorbeeld onderbreking van netwerkconnectiviteit).
- Interval tussen nieuwe pogingen: hiermee bepaalt u hoe lang moet worden gewacht voordat de verbinding met Azure Cosmos DB opnieuw moet worden geprobeerd tijdens tijdelijke fouten (bijvoorbeeld onderbreking van netwerkconnectiviteit).
- Verbindingsmodus: hiermee bepaalt u de verbindingsmodus die moet worden gebruikt met Azure Cosmos DB. De beschikbare opties zijn DirectTcp, DirectHttps en Gateway. De rechtstreekse verbindingsmodi zijn sneller, terwijl de gatewaymodus minder problemen oplevert voor de firewall aangezien deze alleen poort 443 gebruikt.
Tip
Het importprogramma gebruikt standaard verbindingsmodus DirectTcp. Als u problemen ondervindt met de firewall, schakelt u over op de verbindingsmodus Gateway, omdat hiervoor alleen poort 443 is vereist.
Een indexeringsbeleid opgeven
Wanneer u het migratieprogramma Azure Cosmos DB SQL-API-verzamelingen laat maken tijdens het importeren, kunt u het indexeringsbeleid van de verzamelingen opgeven. In de sectie met geavanceerde opties van Azure Cosmos DB-bulkimport en sequentiële Azure Cosmos DB-records, gaat u naar de sectie Indexeringsbeleid.
Wanneer u de geavanceerde optie Indexeringsbeleid gebruikt, kunt u een indexeringsbeleidbestand selecteren, handmatig een indexeringsbeleid invoeren of een keuze maken uit een reeks standaardsjablonen (door met de rechtermuisknop te klikken in het tekstvak voor indexeringsbeleid).
De beleidssjablonen die het hulpprogramma biedt, zijn:
- Standaard. Dit beleid werkt het beste als u gelijkheidsquery’s uitvoert voor tekenreeksen. Het werkt ook als u de query’s ORDER BY, bereik en gelijkheid uitvoer voor getallen. Dit beleid heeft een lagere opslagoverhead voor indexering dan Bereik.
- Bereik. Dit beleid wordt aanbevolen wanneer u de query’s ORDER BY, bereik en gelijkheid gebruikt voor zowel getallen als tekenreeksen. Dit beleid heeft een hogere opslagoverhead voor indexering dan Standaard of Hash.
Notitie
Als u geen indexeringsbeleid opgeeft, wordt het standaardbeleid toegepast. Zie Azure Cosmos DB-indexeringsbeleid voor meer informatie over indexeringsbeleid.
Exporteren naar JSON-bestand
Met de Azure Cosmos DB JSON-exportfunctie kunt u een van de beschikbare bronopties exporteren naar een JSON-bestand dat een matrix met JSON-documenten heeft. Het hulpprogramma verwerkt de export voor u. U kunt er ook voor kiezen om de resulterende migratieopdracht weer te geven en de opdracht zelf uit voeren. Het resulterende JSON-bestand kan lokaal of in Azure Blob-opslag worden opgeslagen.
U kunt eventueel de resulterende JSON opschonen. Met deze actie wordt het resulterende document vergroot terwijl de inhoud beter leesbaar wordt.
JSON-standaardexport
[{"id":"Sample","Title":"About Paris","Language":{"Name":"English"},"Author":{"Name":"Don","Location":{"City":"Paris","Country":"France"}},"Content":"Don's document in Azure Cosmos DB is a valid JSON document as defined by the JSON spec.","PageViews":10000,"Topics":[{"Title":"History of Paris"},{"Title":"Places to see in Paris"}]}]Opgeschoonde JSON-export
[ { "id": "Sample", "Title": "About Paris", "Language": { "Name": "English" }, "Author": { "Name": "Don", "Location": { "City": "Paris", "Country": "France" } }, "Content": "Don's document in Azure Cosmos DB is a valid JSON document as defined by the JSON spec.", "PageViews": 10000, "Topics": [ { "Title": "History of Paris" }, { "Title": "Places to see in Paris" } ] }]
Hier volgt een opdrachtregelvoorbeeld om het JSON-bestand te exporteren naar Azure Blob-opslag:
dt.exe /ErrorDetails:All /s:DocumentDB /s.ConnectionString:"AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB database_name>" /s.Collection:<CosmosDB collection_name>
/t:JsonFile /t.File:"blobs://<Storage account key>@<Storage account name>.blob.core.windows.net:443/<Container_name>/<Blob_name>"
/t.Overwrite
Geavanceerde configuratie
In het scherm Geavanceerde configuratie geeft u de locatie op van het logboekbestand waarnaar eventuele fouten moeten worden geschreven. De volgende regels zijn van toepassing op deze pagina:
Als er geen bestandsnaam is opgegeven, worden alle fouten geretourneerd op de pagina Resultaten.
Als een bestandsnaam wordt opgegeven zonder een map, wordt het bestand gemaakt (of overschreven) in de huidige map in de omgeving.
Als u een bestaand bestand selecteert, wordt het bestand overschreven. Er bestaat geen toevoegoptie.
Kies vervolgens of u alle, kritieke, of geen foutberichten wilt vastleggen in het logboek. Ten slotte bepaalt u hoe vaak het overdrachtsbericht op het scherm moet worden bijgewerkt met de voortgang ervan.
De importinstellingen bevestigen en opdrachtregel weergeven
Nadat u de broninformatie, doelinformatie en geavanceerde configuratie hebt opgegeven, controleert u het migratieoverzicht, en bekijkt of kopieert u de resulterende migratieopdracht, als u wilt. (Het kopiëren van de opdracht is handig voor het automatiseren van importbewerkingen.)
Wanneer u tevreden bent met de bron en doelopties, klikt u op Importeren. De verstreken tijd, het aantal overgedragen bestanden en foutgegevens (als u geen bestandsnaam hebt opgegeven in de geavanceerde configuratie) worden bijgewerkt wanneer de import in bewerking is. Als dit klaar is, kunt u de resultaten exporteren (bijvoorbeeld om eventuele importfouten op te lossen).
U kunt ook een nieuwe import starten door alle waarden opnieuw in te stellen of door de bestaande instellingen te behouden. (U kunt er bijvoorbeeld voor kiezen om de verbindingsreeksgegevens, de bron en het doel, en meer te behouden.)
Volgende stappen
In deze zelfstudie hebt u het volgende gedaan:
- Het hulpprogramma voor gegevensmigratie geïnstalleerd
- Gegevens geïmporteerd uit verschillende gegevensbronnen
- Geëxporteerd vanaf Azure Cosmos DB naar JSON
U kunt nu verder gaan met de volgende zelfstudie om te leren hoe u query's uitvoert op gegevens in Azure Cosmos DB.
Probeert u capaciteitsplanning uit te Azure Cosmos DB?
- Als u alleen het aantal vcores en servers in uw bestaande databasecluster weet, leest u over het schatten van aanvraageenheden met behulp van vCores of vCCPUs
- Als u de gebruikelijke aanvraagsnelheden voor uw huidige databaseworkload kent, leest u over het schatten van aanvraageenheden met behulp van Azure Cosmos DB capacity planner