Självstudie: Använda datamigreringsverktyget för att migrera data till Azure Cosmos DB
GÄLLER FÖR:
SQL API
Den här självstudien innehåller anvisningar för hur du använder datamigreringsverktyget i Azure Cosmos DB, som kan importera data från olika källor till containrar och tabeller i Azure Cosmos DB. Du kan importera från JSON-filer, CSV-filer, SQL, MongoDB, Azure Table Storage, Amazon DynamoDB och till och med Azure Cosmos DB SQL API-samlingar. Du migrerar dessa data till samlingar och tabeller för användning med Azure Cosmos DB. Datamigreringsverktyget kan också användas när du migrerar från en enda partitionssamling till en samling med flera partitioner för SQL API.
Anteckning
Datamigreringsverktyget Azure Cosmos DB är ett verktyg med öppen källkod som utformats för små migreringar. För större migreringar kan du se vår guide för att mata in data.
- SQL-API : Du kan använda något av källalternativen i datamigreringsverktyget för att importera data i liten skala. Lär dig mer om migreringsalternativ för att importera data i stor skala.
- Tabell-API – Du kan använda datamigreringsverktyget eller AzCopy för att importera data. Se Importera data för användning med Azure Cosmos DB Table-API för mer information.
- Azure Cosmos DB API för MongoDB – datamigreringsverktyget stöder inte Azure Cosmos DB:s API för MongoDB som källa eller mål. Om du vill migrera data till eller från samlingar i Azure Cosmos DB kan du läsa Så här migrerar du MongoDB-data till en Cosmos-databas med Azure Cosmos DB:s API för MongoDB för instruktioner. Du kan fortfarande använda datamigreringsverktyget till att exportera data från MongoDB till Azure Cosmos DB SQL API-samlingar för användning med SQL API.
- API för Cassandra – Datamigreringsverktyget stöds inte för import av API för Cassandra konton. Lär dig mer om migreringsalternativ för att importera data till API för Cassandra
- Gremlin API – Datamigreringsverktyget är ett importverktyg som saknar stöd för Gremlin API-konton för närvarande. Lär dig mer om migreringsalternativ för att importera data till Gremlin API
Den här självstudien omfattar följande uppgifter:
- Installera datamigreringsverktyget
- Importera data från olika datakällor
- Exportera från Azure Cosmos DB till JSON
Förutsättningar
Innan du följer anvisningarna i den här artikeln bör du se till att du utför följande steg:
Installera Microsoft .NET Framework 4.51 eller senare.
Öka dataflödet: Hur lång tid datamigreringen tar beror på hur stort dataflöde du anger för en enskild samling eller en uppsättning samlingar. Vi rekommenderar att du ökar dataflödet för större datamigreringar. När du har slutfört migreringen minskar du dataflödet för att spara kostnader. Mer information om hur du ökar dataflödet i Azure-portalen finns i avsnitten om prestandanivåer och prisnivåer i Azure Cosmos DB.
Skapa Azure Cosmos DB-resurser: Innan du börjar migrera data skapar du alla dina samlingar i förväg från Azure-portalen. Om du vill migrera till Azure Cosmos DB-konto som har dataflöde på databasnivå anger du en partitionsnyckel när du skapar Azure Cosmos-containrarna.
Viktigt
Om du vill kontrollera att datamigreringsverktyget använder Transport Layer Security (TLS) 1.2 när du ansluter till dina Azure Cosmos-konton använder du .NET Framework version 4.7 eller följer anvisningarna i den här artikeln.
Översikt
Datamigreringsverktyget är en lösning med öppen källkod som importerar data till Azure Cosmos DB från olika källor, inklusive:
- JSON-filer
- MongoDB
- SQL Server
- CSV-filer
- Azure Table Storage
- Amazon DynamoDB
- HBase
- Azure Cosmos-containrar
Även om importverktyget innehåller ett grafiskt användargränssnitt (dtui.exe), kan det också köras från kommandoraden (dt.exe). Det finns faktiskt ett alternativ till att få utdata från ett associerat kommando när du har konfigurerat en import via användargränssnittet. Du kan transformera tabellkälldata, till exempel SQL Server- eller CSV-filer, för att skapa hierarkiska relationer (underdokument) vid import. Om du vill kan du läsa mer om källalternativ, exempelkommandon för att importera från varje källa, målalternativ och hur du ser de importerade resultaten.
Anteckning
Du bör bara använda Azure Cosmos DB migreringsverktyget för små migreringar. För stora migreringar kan du se vår guide för att mata in data.
Installation
Ladda ned körbart paket
- Ladda ned en zip-fil med den senastedt.exe och dtui.exe Windows binärfiler här
- Packa upp till valfri katalog på datorn och öppna den extraherade katalogen för att hitta binärfilerna
Skapa från källa
Källkoden för migreringsverktyget finns i GitHub på den här lagringsplatsen. Du kan ladda ned och kompilera lösningen lokalt och sedan köra något av följande:
- Dtui.exe: Grafisk gränssnittsversion av verktyget
- DT.exe: Kommandoradsversion av verktyget
Välj datakälla
När du har installerat verktyget är det dags att importera dina data. Vilken typ av data vill du importera?
- JSON-filer
- MongoDB
- MongoDB-exportfiler
- SQL Server
- CSV-filer
- Azure Table Storage
- Amazon DynamoDB
- Blob
- Azure Cosmos-containrar
- HBase
- Azure Cosmos DB-massimport
- Azure Cosmos DB:s import av sekventiella poster
Importera JSON-filer
Med importverktygets alternativ för JSON-filkällor kan du importera ett eller flera dokument med JSON-filer, eller flera JSON-filer som var och en har en matris med JSON-dokument. När du lägger till mappar som har JSON-filer som ska importeras har du möjlighet att rekursivt söka efter filerna i undermappar.
Anslutningssträngen har följande format:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>
- är
<CosmosDB Endpoint>slutpunkts-URI:en. Du kan hämta det här värdet från Azure Portal. Gå till ditt Azure Cosmos-konto. Öppna fönstret Översikt och kopiera URI-värdet. - är
<AccountKey>"Lösenord" eller PRIMÄRNYCKEL. Du kan hämta det här värdet från Azure Portal. Gå till ditt Azure Cosmos-konto. Öppna fönstret Anslutningssträngar eller Nycklar och kopiera värdet "Lösenord" eller PRIMÄRNYCKEL. <CosmosDB Database>är CosmosDB-databasnamnet.
Exempel: AccountEndpoint=https://myCosmosDBName.documents.azure.com:443/;AccountKey=wJmFRYna6ttQ79ATmrTMKql8vPri84QBiHTt6oinFkZRvoe7Vv81x9sn6zlVlBY10bEPMgGM982wfYXpWXWB9w==;Database=myDatabaseName
Anteckning
Använd kommandot Verifiera för att kontrollera att Cosmos DB som angetts i anslutningssträngsfältet kan nås.
Här följer några kommandoradsexempel för import av JSON-filer:
#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
Importera från MongoDB
Viktigt
Om du importerar till ett Cosmos-konto som har konfigurerats med Azure Cosmos DB API för MongoDB, följer du dessa instruktioner.
Med importverktygets alternativ för MongoDB-källor kan du importera från en enskild MongoDB-samling, filtrera dokument med hjälp av en fråga (valfritt) och ändra dokumentstrukturen med hjälp av en projektion.
Anslutningssträngen är i standardformatet för MongoDB:
mongodb://<dbuser>:<dbpassword>@<host>:<port>/<database>
Anteckning
Använd kommandot Kontrollera för att se att den angivna MongoDB-instansen är tillgänglig i anslutningssträngens fält.
Ange namnet på den samling som data ska importeras från. Du kan om du vill ange en fil för en fråga, till exempel {pop: {$gt:5000}}, eller en projektion såsom {loc:0}, för att både filtrera och utforma de data som du importerar.
Här följer några kommandoradsexempel för import från 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
Importera MongoDB-exportfiler
Viktigt
Om du importerar till ett Azure Cosmos DB-konto med stöd för MongoDB följer du dessa anvisningar.
Med importverktygets alternativ för MongoDB-export av JSON-filkällor, kan du importera en eller flera JSON-filer som skapats med verktyget mongoexport.
När du lägger till mappar som har MongoDB-exportens JSON-filer som ska importeras har du möjlighet att rekursivt söka efter filerna i undermappar.
Här följer ett kommandoradsexempel när import görs från MongoDB-exportens JSON-filer:
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
Importera från SQLServer
Med importverktygets alternativ för SQL-källor kan du importera från en enskild SQL Server-databas och du kan också filtrera de poster som ska importeras med hjälp av en fråga. Du kan dessutom ändra dokumentets struktur genom att ange en kapslad avgränsare (mer information om detta kommer längre fram).
Formatet för anslutningssträngen är standardformatet för SQL-anslutningssträngar.
Anteckning
Använd kommandot Kontrollera för att se att den angivna SQL Server-instansen är tillgänglig i anslutningssträngens fält.
Egenskapen för kapslade avgränsare används för att skapa hierarkiska relationer (underdokument) under importen. Fundera över följande SQL-fråga:
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'
Som returnerar följande (partiella) värden:
Observera alias som t.ex. Address.AddressType och Address.Location.StateProvinceName. När du anger den kapslade avgränsaren '.', skapar importverktyget underdokumenten Address och Address.Location under importen. Här är ett exempel på ett resulterande dokument i Azure Cosmos DB:
{ "id": "956", "Name": "Finer Sales and Service", "Address": { "AddressType": "Main Office", "AddressLine1": "#500-75 O'Connor Street", "Location": { "City": "Ottawa", "StateProvinceName": "Ontario" }, "PostalCode": "K4B 1S2", "CountryRegionName": "Canada" } }
Här följer några kommandoradsexempel för att importera från 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
Importera CSV-filer och konvertera CSV till JSON
Med importverktygets alternativ för CSV-filkällor kan du importera en eller flera CSV-filer. När du lägger till mappar som har CSV-filer som ska importeras har du möjlighet att rekursivt söka efter filerna i undermappar.
På samma sätt som med SQL-källan kan egenskapen för kapslade avgränsare användas till att skapa hierarkiska relationer (underdokument) under importen. Fundera över följande CSV-rubrikrad och datarader:
Observera alias som t.ex. DomainInfo.Domain_Name och RedirectInfo.Redirecting. När du anger den kapslade avgränsaren '.', skapar importverktyget underdokumenten DomainInfo och RedirectInfo under importen. Här är ett exempel på ett resulterande dokument i Azure Cosmos DB:
{ "DomainInfo": { "Domain_Name": "ACUS.GOV", "Domain_Name_Address": "https: / /www.ACUS.GOV" }, "Federal Agency": "Administrative Conference of the USA", "RedirectInfo": { "Redirecting": "0", "Redirect_Destination": "" }, "id": "9cc565c5-ebcd-1c03-ebd3-cc3e2ecd814d" }
Importverktyget försöker härleda typinformationen för värden utan citattecken i CSV-filer (värden inom citattecken behandlas alltid som strängar). Typer identifieras i följande ordning: nummer, datetime, booleskt värde.
Det finns två saker att lägga märke till när det gäller CSV-import:
- Som standard tas värden utan citattecken alltid bort för flikar och blanksteg, medan värden inom citattecken sparas som de är. Den här funktionen kan åsidosättas med kryssrutan Trim quoted values (Rensa värden inom citattecken) eller kommandoradsalternativet /s.TrimQuoted.
- Som standard behandlas null utan citattecken som ett null-värde. Den här funktionen kan åsidosättas (dvs. behandla null utan citattecken som en null-sträng) med kryssrutan Treat unquoted NULL as string (Behandla NULL utan citattecken som en sträng) eller kommandoradsalternativet /s.NoUnquotedNulls.
Här följer ett kommandoradsexempel för 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
Importera från Azure Table Storage
Med importverktygets alternativ för Azure Table Storage-källor kan du importera från en enskild Azure Table Storage-tabell. Du kan också du filtrera tabellentiteterna som ska importeras.
Du kan mata ut data som importerades från Azure Table Storage till Azure Cosmos DB-tabeller och -entiteter för användning med tabell-API. Importerade data kan även vara utdata till samlingar och dokument för användning med SQL API. Dock är tabell-API endast tillgängligt som mål i kommandoradsverktyget. Du kan inte exportera till tabell-API med hjälp av användargränssnittet för datamigreringsverktyget. Se Importera data för användning med Azure Cosmos DB Table-API för mer information.
Formatet för anslutningssträngen till Azure Table Storage är:
DefaultEndpointsProtocol=<protocol>;AccountName=<Account Name>;AccountKey=<Account Key>;
Anteckning
Använd kommandot Kontrollera för att se att den angivna Azure Table Storage-instansen är tillgänglig i anslutningssträngens fält.
Ange namnet på Azure-tabellen som du ska importera från. Du kan också ange ett filter.
Importverktygets alternativ för Azure Table Storage-källor innehåller dessutom följande extra alternativ:
- Inkludera interna fält
- Alla – Inkludera alla interna fält (PartitionKey, RowKey och Timestamp)
- Ingen – Undanta alla interna fält
- RowKey – Inkludera bara fältet RowKey
- Välja kolumner
- Azure Table Storage-filter stöder inte projektioner. Om du endast vill importera specifika entitetsegenskaper från Azure-tabellen, lägger du till dem i listan Välj kolumner. Alla andra entitetsegenskaper ignoreras.
Här är ett kommandoradsexempel på hur du importerar från 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
Importera från Amazon DynamoDB
Med alternativet för Amazon DynamoDB-källimport kan du importera från en enskild Amazon DynamoDB-tabell. Det kan även filtrera de entiteter som ska importeras om du väljer det. Det finns flera olika mallar att välja bland, för att konfigurationen av importen ska vara så enkel som möjligt.
Formatet på Amazon DynamoDB-anslutningssträngen är:
ServiceURL=<Service Address>;AccessKey=<Access Key>;SecretKey=<Secret Key>;
Anteckning
Använd kommandot Kontrollera för att se att den angivna Amazon DynamoDB-instansen är tillgänglig i anslutningssträngens fält.
Här är ett kommandoradsexempel på hur du importerar från 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
Importera från Azure Blob Storage
Med importverktygets alternativ för källor från JSON-filen, MongoDB-exportfilen och CSV-filen, kan du importera en eller flera filer från Azure Blob Storage. När du har angett en URL för blobcontainern och en kontonyckel, använder du ett reguljärt uttryck till att välja vilka filer du vill importera.
Här är ett kommandoradsexempel på hur du kan importera JSON-filer från Azure Blob Storage:
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
Importera från en SQL API-samling
Med Azure Cosmos DB importverktygets alternativ för källor kan du importera data från en eller flera Azure Cosmos-containrar och eventuellt filtrera dokument med hjälp av en fråga.
Anslutningssträngen för Azure Cosmos DB har följande format:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;
Du kan hämta Azure Cosmos DB-kontoanslutningssträngen från sidan Nycklar i Azure-portalen, enligt beskrivningen i Så här hanterar du ett Azure Cosmos DB-konto. Dock måste namnet på databasen läggas till i anslutningssträngen i följande format:
Database=<CosmosDB Database>;
Anteckning
Använd kommandot Kontrollera för att se att den angivna Azure Cosmos DB-instansen är tillgänglig i anslutningssträngens fält.
Om du vill importera från en enda Azure Cosmos-container anger du namnet på samlingen som data ska importeras från. Om du vill importera från fler än en Azure Cosmos-container anger du ett reguljärt uttryck som matchar ett eller flera samlingsnamn (till exempel collection01 | collection02 | collection03). Du kan om du vill ange en fil för en fråga för att både filtrera och utforma de data som du importerar.
Anteckning
Eftersom samlingsfältet accepterar reguljära uttryck kommer dessa tecken att hoppas över, om du importerar från en enda samling vars namn innehåller tecken i reguljära uttryck.
Importverktygets alternativ för Azure Cosmos DB-källor innehåller följande avancerade alternativ:
- Inkludera interna fält: Anger om du vill inkludera Azure Cosmos DB-dokumentegenskaper för system i exporten (till exempel _rid, _ts).
- Antal återförsök vid fel: Anger hur många gånger systemet försöker återupprätta anslutningen till Azure Cosmos DB vid tillfälliga fel (till exempel avbrott i nätverksanslutningen).
- Återförsöksintervall: Anger hur lång väntetiden är vid försök att återupprätta anslutningen till Azure Cosmos DB vid tillfälliga fel (till exempel avbrott i nätverksanslutningen).
- Anslutningsläge: Anger det anslutningsläge som ska användas med Azure Cosmos DB. Tillgängliga alternativ är DirectTcp, DirectHttps och Gateway. Direktanslutningslägena är snabbare, medan gatewayläget är mer brandväggsanpassat eftersom det endast använder port 443.
Tips
Importverktyget använder som standard anslutningsläget DirectTcp. Om det uppstår brandväggsproblem kan du växla till anslutningsläget Gateway, eftersom det endast kräver port 443.
Här följer några kommandoradsexempel på hur du importerar från 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
Tips
Dataimportverktyget i Azure Cosmos DB har även stöd för import av data från Azure Cosmos DB-emulatorn. När du importerar data från en lokal emulator anger du slutpunkten till https://localhost:<port>.
Importera från HBase
Med importverktygets alternativ för HBase-källor kan du importera data från en HBase-tabell och du kan också filtrera datan. Det finns flera olika mallar att välja bland, för att konfigurationen av importen ska vara så enkel som möjligt.
Anslutningssträngen för HBase Stargate har följande format:
ServiceURL=<server-address>;Username=<username>;Password=<password>
Anteckning
Använd kommandot Kontrollera för att se att den angivna HBase-instansen är tillgänglig i anslutningssträngens fält.
Här är ett kommandoradsexempel på hur du importerar från 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
Importera till SQL API (massimport)
Med massimportverktyget för Azure Cosmos DB kan du importera från något av källalternativen, med hjälp av en Azure Cosmos DB-lagrad procedur som effektiviserar processen. Verktyget stöder import till en Azure Cosmos-container med en enda partition. Den stöder också horisontell partitionerad import där data partitioneras över fler än en Azure Cosmos-container med en enda partition. Mer information om partitionering av data finns i Partitionering och skalning i Azure Cosmos DB. Verktyget skapar, kör och tar sedan bort den lagrade proceduren från målsamlingarna.
Anslutningssträngen för Azure Cosmos DB har följande format:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;
Anslutningssträngen för Azure Cosmos DB-kontot kan hämtas från sidan Nycklar i Azure Portal, enligt beskrivningen i Så här hanterar du ett konto i Azure Cosmos DB, men namnet på databasen måste läggas till i anslutningssträngen i följande format:
Database=<CosmosDB Database>;
Anteckning
Använd kommandot Kontrollera för att se att den angivna Azure Cosmos DB-instansen är tillgänglig i anslutningssträngens fält.
Om du ska importera till en enskild samling anger du namnet på samlingen som du ska importera data från. Klicka sedan på knappen Lägg till. Om du vill importera till fler än en samling anger du antingen varje samlingsnamn individuellt, eller så använder du följande syntax för att ange fler än en samling: collection_prefix[start index - end index]. Tänk på följande riktlinjer när du anger fler än en samling med hjälp av ovannämnda syntax:
- Det är bara namnmönster i heltalsintervall som stöds. Om du till exempel anger collection[0-3] skapas följande samlingar: collection0, collection1, collection2 och collection3.
- Du kan använda en förkortad syntax: collection[3] skapar samma uppsättning samlingar som nämns i steg 1.
- Mer än en ersättning kan anges. Till exempel genererar collection[0-1] [0-9] 20 samlingsnamn med inledande nollor (collection01, ..02, ..03).
När samlingsnamnen har angetts väljer du önskad dataflöde för samlingarna (från 400 till 10 000 RU:er). Välj ett högre dataflöde för att få bästa prestandan för importen. Mer information om prestandanivåer finns i avsnittet Prestandanivåer i Azure Cosmos DB.
Anteckning
Inställningen av prestandans dataflöde gäller bara när samlingar skapas. Om den angivna samlingen redan finns ändras inte dess dataflöde.
När du importerar till fler än en samling stöder importverktyget hash-baserad horisontell partitionering. I det här scenariot anger du den dokumentegenskap som du vill använda som partitionsnyckel. (Om partitionsnyckeln lämnas tom partitioneras dokument horisontellt över målsamlingarna.)
Du kan om du vill ange vilket fält i importkällan som ska användas som Azure ID-egenskap för Cosmos DB-dokument under importen. Om dokument inte har den här egenskapen genererar importverktyget ett GUID som ID-egenskapsvärde.
Det finns ett antal avancerade alternativ under importen. Även om verktyget innehåller en standardlagrad procedur för massimport (BulkInsert.js), kan du ange en egen lagrad importprocedur:
När du importerar datumtyper (till exempel från SQL Server eller MongoDB) kan du dessutom välja mellan tre importalternativ:
- Sträng: Spara som ett strängvärde
- Epok: Spara som ett epoknummervärde
- Båda: Spara både strängvärden och epoknummervärden. Det här alternativet skapar ett underdokument, till exempel: "date_joined": { "Value": "2013-10-21T21:17:25.2410000Z", "Epoch": 1382390245 }
Massimportverktyget för Azure Cosmos DB innehåller följande avancerade extra alternativ:
- Batchstorlek: Verktyget har som standard en batchstorlek på 50. Om de dokument som ska importeras är stora kan du minska batchstorleken. Om de dokument som ska importeras är små kan du öka batchstorleken.
- Maxstorlek för skript (byte): Verktyget har som standard en maxstorlek för skript på 512 kB.
- Inaktivera automatisk ID-generering: Om alla dokument som ska importeras har ett ID-fält kan det här alternativet öka prestandan. Dokument som saknar ett fält för unikt ID importeras inte.
- Uppdatera befintliga dokument: Verktyget ersätter som standard inte befintliga dokument med ID-konflikter. Med det här alternativet kan du skriva över befintliga dokument med matchande ID:n. Funktionen är användbar vid schemalagda datamigreringar som uppdaterar befintliga dokument.
- Antal återförsök vid fel: Anger hur ofta systemet försöker återupprätta anslutningen till Azure Cosmos DB vid tillfälliga fel (till exempel avbrott i nätverksanslutningen).
- Återförsöksintervall: Anger hur lång väntetiden är vid försök att återupprätta anslutningen till Azure Cosmos DB vid tillfälliga fel (till exempel avbrott i nätverksanslutningen).
- Anslutningsläge: Anger det anslutningsläge som ska användas med Azure Cosmos DB. Tillgängliga alternativ är DirectTcp, DirectHttps och Gateway. Direktanslutningslägena är snabbare, medan gatewayläget är mer brandväggsanpassat eftersom det endast använder port 443.
Tips
Importverktyget använder som standard anslutningsläget DirectTcp. Om det uppstår brandväggsproblem kan du växla till anslutningsläget Gateway, eftersom det endast kräver port 443.
Importera till SQL API (import av sekventiella poster)
Med importverktyget för sekventiella poster i Azure Cosmos DB kan du importera från ett tillgängligt källalternativ post för post. Du kan välja det här alternativet om du importerar till en befintlig samling som har uppnått sin kvot av lagrade procedurer. Verktyget stöder import till en enda Azure Cosmos-container (både en partition och flera partitioner). Den stöder också horisontell partitionerad import där data partitioneras över mer än en Azure Cosmos-container med en partition eller flera partitioner. Mer information om partitionering av data finns i Partitionering och skalning i Azure Cosmos DB.
Anslutningssträngen för Azure Cosmos DB har följande format:
AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;
Du kan hämta anslutningssträngen för Azure Cosmos DB-konto från sidan Nycklar i Azure-portalen, enligt beskrivningen i Så här hanterar du ett Azure Cosmos DB-konto. Dock måste namnet på databasen läggas till i anslutningssträngen i följande format:
Database=<Azure Cosmos database>;
Anteckning
Använd kommandot Kontrollera för att se att den angivna Azure Cosmos DB-instansen är tillgänglig i anslutningssträngens fält.
Om du ska importera till en enskild samling anger du namnet på den samling som data ska importeras till och klickar sedan på knappen Lägg till. Ange varje samlingsnamn separat om du vill importera till mer än en samling. Du kan även använda följande syntax för att ange mer än en samling: collection_prefix[start index - end index]. Tänk på följande riktlinjer när du anger fler än en samling via ovannämnda syntax:
- Det är bara namnmönster i heltalsintervall som stöds. Om du till exempel anger collection[0-3] skapas följande samlingar: collection0, collection1, collection2 och collection3.
- Du kan använda en förkortad syntax: collection[3] skapar samma uppsättning samlingar som nämns i steg 1.
- Mer än en ersättning kan anges. Till exempel skapar samling [0-1] [0-9] 20 samlingsnamn med inledande nollor (collection01, ..02, ..03).
När samlingsnamnen har angetts väljer du önskat dataflöde för samlingarna (från 400 till 250 000 RU:er). Välj ett högre dataflöde för att få bästa prestandan för importen. Mer information om prestandanivåer finns i avsnittet Prestandanivåer i Azure Cosmos DB. Om du importerar till samlingar med dataflöde > 10 000 RU:er måste du ha en partitionsnyckel. Om du vill ha fler än 250 000 RU:er, måste du skicka en begäran i portalen om att öka ditt konto.
Anteckning
Inställningen av dataflödet gäller bara när samlingar eller databaser skapas. Om den angivna samlingen redan finns ändras inte dess dataflöde.
Vid import till fler än en samling stöder importverktyget hash-baserad horisontell partitionering. I det här scenariot anger du den dokumentegenskap som du vill använda som partitionsnyckel. (Om partitionsnyckeln lämnas tom partitioneras dokument horisontellt över målsamlingarna.)
Du kan om du vill ange vilket fält i importkällan som ska användas som Azure ID-egenskap för Cosmos DB-dokument under importen. (Om dokument inte har den här egenskapen genererar importverktyget ett GUID som ID-egenskapsvärde.)
Det finns ett antal avancerade alternativ under importen. När du importerar datumtyper (till exempel från SQL Server eller MongoDB) kan du välja mellan tre importalternativ:
- Sträng: Spara som ett strängvärde
- Epok: Spara som ett epoknummervärde
- Båda: Spara både strängvärden och epoknummervärden. Det här alternativet skapar ett underdokument, till exempel: "date_joined": { "Value": "2013-10-21T21:17:25.2410000Z", "Epoch": 1382390245 }
Azure Cosmos DB – Importverktyget för sekventiella poster innehåller följande avancerade alternativ:
- Antal parallella begäranden: Verktyget kan som standard hantera två parallella begäranden. Om de dokument som ska importeras är små, kan du öka antalet parallella begäranden. Om antalet ökas för mycket kan en nätverksbegränsning uppstå vid importen.
- Inaktivera automatisk ID-generering: Om alla dokument som ska importeras har ett ID-fält kan det här alternativet öka prestandan. Dokument som saknar ett fält för unikt ID importeras inte.
- Uppdatera befintliga dokument: Verktyget ersätter som standard inte befintliga dokument med ID-konflikter. Med det här alternativet kan du skriva över befintliga dokument med matchande ID:n. Funktionen är användbar vid schemalagda datamigreringar som uppdaterar befintliga dokument.
- Antal återförsök vid fel: Anger hur ofta systemet försöker återupprätta anslutningen till Azure Cosmos DB vid tillfälliga fel (till exempel avbrott i nätverksanslutningen).
- Återförsöksintervall: Anger hur lång väntetiden är vid försök att återupprätta anslutningen till Azure Cosmos DB vid tillfälliga fel (till exempel avbrott i nätverksanslutningen).
- Anslutningsläge: Anger det anslutningsläge som ska användas med Azure Cosmos DB. Tillgängliga alternativ är DirectTcp, DirectHttps och Gateway. Direktanslutningslägena är snabbare, medan gatewayläget är mer brandväggsanpassat eftersom det endast använder port 443.
Tips
Importverktyget använder som standard anslutningsläget DirectTcp. Om det uppstår brandväggsproblem kan du växla till anslutningsläget Gateway, eftersom det endast kräver port 443.
Ange en indexeringsprincip
Om du tillåter att migreringsverktyget skapar Azure Cosmos DB SQL API-samlingar under importen, kan du ange indexeringsprincipen för samlingarna. Gå till Indexeringsprincip i avsnittet med avancerade alternativ i alternativen för Azure Cosmos DB-massimport och sekventiella poster i Azure Cosmos DB.
I de avancerade alternativen för indexeringsprinciper kan du välja en indexeringsprincipfil, manuellt ange en indexeringsprincip, eller välja bland en uppsättning standardmallar (genom att högerklicka i textrutan för indexeringsprinciper).
Principmallarna i verktyget är:
- Standard. Den här principen är bäst när du utför likhetsfrågor mot strängar. Den fungerar även om du använder ORDER BY, intervall och likhetsfrågor för tal. Den här principen har lägre omkostnad för indexlagring än Intervall.
- Intervall. Den här principen passar bäst när du använder ORDER BY, intervall och likhetsfrågor för både tal och strängar. Principen har högre omkostnad för indexlagring än Standard och Hash.
Anteckning
Om du inte anger någon indexeringsprincip används standardprincipen. Mer information om indexeringsprinciper finns i Azure Cosmos DB-indexeringsprinciper.
Exportera till JSON-fil
Med exportverktyget Azure Cosmos DB JSON kan du exportera alla tillgängliga källalternativ till en JSON-fil som har en matris av JSON-dokument. Verktyget hanterar exporten åt dig. Alternativt kan du visa resulterande migreringskommando och köra kommandot själv. Den resulterande JSON-filen kan vara lagrad lokalt eller i Azure Blob Storage.
Du kan välja att förenkla resulterande JSON. Den här åtgärden ökar storleken på det resulterande dokumentet samtidigt som innehållet blir mer läsbart.
Standard 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"}]}]Förenklad 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" } ] }]
Här är ett kommandoradsexempel på hur du kan exportera JSON-filen till Azure Blob Storage:
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
Avancerad konfiguration
På skärmen Avancerad konfiguration anger du platsen för loggfilen där du vill att eventuella fel skrivs. Följande regler gäller för den här sidan:
Om ett filnamn inte anges returneras alla fel till sidan Resultat.
Om ett filnamn anges utan en katalog, skapas filen (eller skrivs över) i den aktuella katalogen i miljön.
Om du väljer en befintlig fil skrivs den över. Det finns inte något alternativ för att lägga till filen.
Välj sedan om du vill logga alla, kritiska eller inga felmeddelanden. Bestäm slutligen hur ofta den på överföringsmeddelandet på skärmen ska uppdateras med förloppet.
Bekräfta importinställningarna och visa kommandoraden
När du har angett källinformation, målinformation och avancerad konfiguration granskar du migreringsöversikten och visar eller kopierar det resulterande migreringskommandot om du vill. (Att kopiera kommandot är användbart för att automatisera importåtgärder.)
När du är nöjd med dina käll- och målalternativ klickar du på Importera. Förfluten tid, antal överförda och felinformation (om du inte angav ett filnamn i Avancerad konfiguration) uppdateras medan importen pågår. När installationen är klar kan du exportera resultaten (till exempel för att åtgärda eventuella importfel).
Du kan även starta en ny import genom att antingen återställa alla värden eller behålla de befintliga inställningarna. (Till exempel kan du behålla information om anslutningssträng, val av källa och mål och mer.)
Nästa steg
I den här självstudien har du gjort följande:
- Installerat datamigreringsverktyget
- Importerat data från olika datakällor
- Exporterat från Azure Cosmos DB till JSON
Nu kan du gå vidare till nästa självstudie och lära dig att fråga efter data med hjälp av Azure Cosmos DB.
Försöker du göra kapacitetsplanering för en migrering till Azure Cosmos DB?
- Om allt du vet är antalet virtuella kärnor och servrar i ditt befintliga databaskluster kan du läsa om att uppskatta enheter för programbegäran med hjälp av virtuella kärnor eller virtuella processorer
- Om du känner till vanliga begärandefrekvenser för din aktuella databasarbetsbelastning kan du läsa om att uppskatta enheter för programbegäran med Azure Cosmos DB kapacitetsplaneraren