Kurz: Použití nástroje pro migraci dat k migraci dat do Azure Cosmos DB

PLATÍ PRO: SQL API

Tento kurz obsahuje pokyny k použití nástroje pro migraci dat do služby Azure Cosmos DB, který dokáže importovat data z různých zdrojů do kontejnerů a tabulek Azure Cosmos. Můžete importovat ze souborů JSON, CSV, SQL, MongoDB, služby Azure Table Storage, Amazon DynamoDB a dokonce i z kolekcí rozhraní SQL API služby Azure Cosmos DB. Pro použití se službou Azure Cosmos DB tato data migrujete do kolekcí a tabulek. Nástroj pro migraci dat můžete použít také při migraci z kolekce s jedním oddílem do kolekce s více oddíly pro rozhraní SQL API.

Poznámka

Nástroj pro migraci dat Azure Cosmos DB je open source určený pro malé migrace. V případě rozsáhlejších migrací si prohlédněte našeho průvodce ingestací dat.

Tento kurz se zabývá následujícími úkony:

  • Instalace nástroje pro migraci dat
  • Import dat z různých zdrojů dat
  • Export ze služby Azure Cosmos DB do formátu JSON

Požadavky

Než budete postupovat podle pokynů v tomto článku, nezapomeňte provést následující kroky:

  • Nainstalujte Microsoft .NET Framework 4.51 nebo novější.

  • Zvýšená propustnost: Doba trvání migrace dat závisí na propustnosti, kterou pro jednotlivé kolekce nebo sady kolekcí nastavíte. V případě rozsáhlejších migrací dat nezapomeňte propustnost zvýšit. Po dokončení migrace propustnost snižte, abyste dosáhli nižších nákladů. Další informace o zvýšení propustnosti v Azure Portal najdete v tématu Úrovně výkonu a cenové úrovně v Azure Cosmos DB.

  • Vytvoření prostředků služby Azure Cosmos DB: Ještě před zahájením migrace dat vytvořte všechny kolekce na webu Azure Portal. Pokud chcete migrovat na účet Azure Cosmos DB s propustností na úrovni databáze, při vytváření kontejnerů Azure Cosmos oddílu zadejte klíč oddílu.

Důležité

Pokud chcete zajistit, aby nástroj pro migraci dat při připojování k účtům Azure Cosmos používá protokol TLS (Transport Layer Security) 1.2, použijte .NET Framework verze 4.7 nebo postupujte podle pokynů uvedených v tomto článku.

Přehled

Nástroj pro migraci dat je open source řešení umožňující import dat do služby Azure Cosmos DB z různých zdrojů, včetně:

  • Soubory JSON
  • MongoDB
  • SQL Server
  • Soubory CSV
  • Azure Table Storage
  • Amazon DynamoDB
  • HBase
  • Kontejnery Azure Cosmos

Přestože nástroj pro import obsahuje grafické uživatelské rozhraní (dtui.exe), dá se ovládat i z příkazového řádku (dt.exe). Ve skutečnosti existuje možnost zobrazit výstup přidruženého příkazu po nastavení importu prostřednictvím uživatelského rozhraní. Při importu můžete transformovat tabulková zdrojová data, jako jsou SQL Server nebo soubory CSV, a vytvořit hierarchické vztahy (vnořené dokumenty). V dalších částech tohoto článku se dozvíte více o možnostech zdroje, ukázkových příkazech pro import z jednotlivých zdrojů, možnostech cíle a zobrazení výsledků importu.

Poznámka

Nástroj pro migraci Azure Cosmos DB byste měli používat pouze pro malé migrace. V případě rozsáhlých migrací si prohlédněte našeho průvodce ingestací dat.

Instalace

Stažení spustitelného balíčku

  • Stáhněte si soubor ZIP s nejnovější podepsanoudt.exe adtui.exe Windows binárních souborů.
  • Rozbalte do libovolného adresáře v počítači a otevřete extrahovaný adresář a vyhledejte binární soubory.

Sestavení ze zdroje

Zdrojový kód nástroje pro migraci je k dispozici na GitHubu v tomto úložišti. Řešení si můžete stáhnout a zkompilovat místně a pak spustit:

  • Dtui.exe: Verze nástroje s grafickým rozhraním
  • Dt.exe: Verze nástroje pro příkazový řádek

Výběr zdroje dat

Po instalaci nástroje je čas importovat data. Jaký druh dat chcete importovat?

Import souborů JSON

Možnost importu ze zdroje souborů JSON umožňuje importovat jeden nebo více souborů JSON s jedním dokumentem nebo souborů JSON, z nichž každý obsahuje pole dokumentů JSON. Při přidávání složek, které mají soubory JSON k importu, máte možnost rekurzivně vyhledávat soubory v podsložkách.

Snímek obrazovky s možnostmi zdrojového souboru JSON – nástroje pro migraci databází

Připojovací řetězec má následující formát:

AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>

  • je <CosmosDB Endpoint> identifikátor URI koncového bodu. Tuto hodnotu můžete získat z Azure Portal. Přejděte ke svému Cosmos Azure. Otevřete podokno Přehled a zkopírujte hodnotu identifikátoru URI.
  • <AccountKey>je "Heslo" nebo PRIMÁRNÍ KLÍČ. Tuto hodnotu můžete získat z Azure Portal. Přejděte ke svému Cosmos Azure. Otevřete podokno Připojovací řetězce nebo Klíče a zkopírujte hodnotu Heslo nebo PRIMÁRNÍ KLÍČ.
  • <CosmosDB Database>je název databáze CosmosDB.

Příklad: AccountEndpoint=https://myCosmosDBName.documents.azure.com:443/;AccountKey=wJmFRYna6ttQ79ATmrTMKql8vPri84QBiHTt6oinFkZRvoe7Vv81x9sn6zlVlBY10bEPMgGM982wfYXpWXWB9w==;Database=myDatabaseName

Poznámka

Pomocí příkazu Verify se ujistěte, že je Cosmos DB zadaný v poli připojovacího řetězce přístupný.

Tady je několik ukázek příkazového řádku pro import souborů JSON:

#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

Import z MongoDB

Důležité

Pokud importujete do účtu Cosmos nakonfigurovaného s rozhraním API služby Azure Cosmos DB pro MongoDB, postupujte podle těchto pokynů.

Pomocí možnosti importu ze zdroje MongoDB můžete importovat z jedné kolekce MongoDB, volitelně filtrovat dokumenty pomocí dotazu a upravit strukturu dokumentů pomocí projekce.

Snímek obrazovky s možnostmi zdroje MongoDB

Připojovací řetězec je ve standardním formátu MongoDB:

mongodb://<dbuser>:<dbpassword>@<host>:<port>/<database>

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance MongoDB zadaná v poli připojovacího řetězce přístupná.

Zadejte název kolekce, ze které se data budou importovat. Volitelně můžete zadat nebo zadat soubor pro dotaz, například , nebo projekci, jako je , pro filtrování a tvarování {pop: {$gt:5000}} {loc:0} importovaných dat.

Tady je několik ukázek příkazového řádku pro import z 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

Import exportovaných souborů MongoDB

Důležité

Pokud importujete do účtu Azure Cosmos DB s podporou MongoDB, postupujte podle těchto pokynů.

Možnost importu ze zdrojového exportovaného souboru JSON z MongoDB umožňuje importovat jeden nebo několik souborů JSON vygenerovaných nástrojem mongoexport.

Snímek obrazovky s možnostmi zdroje exportu MongoDB

Při přidávání složek s exportem souborů JSON mongoDB pro import máte možnost rekurzivně vyhledávat soubory v podsložkách.

Tady je ukázka příkazového řádku pro import z exportovaných souborů JSON z MongoDB:

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

Import z SQL Serveru

Možnost importu ze zdroje SQL umožňuje importovat z jednotlivých databází SQL Serveru a volitelně pomocí dotazu filtrovat záznamy určené k importu. Kromě toho můžete upravit strukturu dokumentu zadáním oddělovače vnořování (další informace najdete níže).

Snímek obrazovky s možnostmi zdroje SQL – nástroje pro migraci databází

Připojovací řetězec je ve standardním formátu připojovacího řetězce SQL.

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance SQL Serveru zadaná v poli připojovacího řetězce přístupná.

Vlastnost oddělovače vnořování slouží k vytvoření hierarchických vztahů (vnořených dokumentů) během importu. Představte si následující dotaz SQL:

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'

Dotaz vrátí následující (částečné) výsledky:

Snímek obrazovky s výsledky dotazu SQL

Všimněte si aliasů, jako jsou Address.AddressType a Address.Location.StateProvinceName. Díky zadání oddělovače vnořování („.“) nástroj pro import během importu vytvoří vnořené dokumenty Address a Address.Location. Tady je příklad výsledného dokumentu ve službě 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" } }

Tady je několik ukázek příkazového řádku pro import z SQL Serveru:

#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

Import souborů CSV a převod formátu CSV na JSON

Možnost importu ze zdrojového souboru CSV umožňuje importovat jeden nebo několik souborů CSV. Při přidávání složek, které mají soubory CSV pro import, máte možnost rekurzivně vyhledávat soubory v podsložkách.

Snímek obrazovky s možnostmi zdroje CSV – z CSV na JSON

Podobně jako u zdroje SQL můžete použít vlastnost oddělovače vnořování k vytvoření hierarchických vztahů (vnořených dokumentů) během importu. Představte si následující řádek záhlaví a datové řádky CSV:

Snímek obrazovky s ukázkovými záznamy CSV – z CSV na JSON

Všimněte si aliasů, jako jsou DomainInfo.Domain_Name a RedirectInfo.Redirecting. Díky zadání oddělovače vnořování („.“) nástroj pro import během importu vytvoří vnořené dokumenty DomainInfo a RedirectInfo. Tady je příklad výsledného dokumentu ve službě 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-cc3e2 814d" }

Nástroj pro import se pokusí odvodit informace o typu pro hodnoty bez uvozovek v souborech CSV (hodnoty v uvozovkách jsou vždy považovány za řetězce). Typy se identifikují v následujícím pořadí: číslo, datetime, logická hodnota.

O importu CSV byste měli vědět ještě dvě věci:

  1. Ve výchozím nastavení se v hodnotách bez uvozovek vždy oříznou tabulátory a mezery, zatímco hodnoty v uvozovkách se zachovají tak, jak jsou. Toto chování je možné přepsat pomocí zaškrtávacího políčka Trim quoted values (Oříznout hodnoty v uvozovkách) nebo možnosti příkazového řádku /s.TrimQuoted.
  2. Ve výchozím nastavení se řetězec null bez uvozovek považuje za hodnotu null. Toto chování je možné přepsat (tedy aby se řetězec null bez uvozovek považoval za řetězec null) pomocí zaškrtávacího políčka Treat unquoted NULL as string (Považovat hodnotu NULL bez uvozovek za řetězec) nebo možnosti příkazového řádku /s.NoUnquotedNulls.

Tady je ukázka příkazového řádku pro import CSV:

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

Import ze služby Azure Table Storage

Možnost importu ze zdroje Azure Table Storage umožňuje importovat z jednotlivých tabulek Azure Table Storage. Entity tabulky, které se mají importovat, můžete volitelně filtrovat.

Výstupem můžete být data importovaná z Azure Table Storage do tabulek a entit Azure Cosmos DB pro použití s rozhraní API pro tabulky. Importovaná data mohou být také výstupem do kolekcí a dokumentů pro použití s rozhraním SQL API. Nástroj rozhraní API pro tabulky ale k dispozici jako cíl pouze v nástroji příkazového řádku. Pomocí uživatelského rozhraní nástroje rozhraní API pro tabulky data nelze exportovat do nástroje pro migraci dat. Další informace najdete v tématu Import dat pro použití s rozhraním Table API služby Azure Cosmos DB.

Snímek obrazovky s možnostmi zdroje Azure Table Storage

Formát připojovacího řetězce Azure Table Storage je následující:

DefaultEndpointsProtocol=<protocol>;AccountName=<Account Name>;AccountKey=<Account Key>;

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance služby Azure Table Storage zadaná v poli připojovacího řetězce přístupná.

Zadejte název tabulky Azure, ze které se má importovat. Volitelně můžete zadat filtr.

Možnost importu ze zdroje Azure Table Storage nabízí následující další možnosti:

  1. Include Internal Fields (Zahrnout interní pole)
    1. All (Vše) – Zahrnou se všechna interní pole (PartitionKey, RowKey a Timestamp)
    2. None (Žádné) – Všechna interní pole se vyloučí
    3. RowKey – Zahrne se pouze pole RowKey
  2. Select Columns (Vybrané sloupce)
    1. Filtry Azure Table Storage nepodporují projekce. Pokud chcete importovat pouze určité vlastnosti entit tabulky Azure, přidejte se je do seznamu Select Columns (Vybrané sloupce). Všechny ostatní vlastnosti entit se budou ignorovat.

Tady je ukázka příkazového řádku pro import ze služby 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

Import z Amazon DynamoDB

Možnost importu ze zdroje Amazon DynamoDB umožňuje importovat z jedné tabulky Amazon DynamoDB. Volitelně může filtrovat entity, které se mají importovat. K dispozici je několik šablon, které nastavení importu co nejvíce zjednodušují.

Snímek obrazovky s možnostmi zdroje Amazon DynamoDB – nástroje pro migraci databází

Snímek obrazovky s možnostmi zdroje Amazon DynamoDB a šablonou – nástroje pro migraci databází

Formát připojovacího řetězce Amazon DynamoDB je následující:

ServiceURL=<Service Address>;AccessKey=<Access Key>;SecretKey=<Secret Key>;

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance Amazon DynamoDB zadaná v poli připojovacího řetězce přístupná.

Tady je ukázka příkazového řádku pro import z 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

Import ze služby Azure Blob Storage

Možnosti importu ze zdrojového souboru JSON, exportovaného souboru MongoDB a souboru CSV umožňují importovat jeden nebo několik souborů ze služby Azure Blob Storage. Po zadání adresy URL kontejneru objektů blob a klíče účtu zadejte regulární výraz pro výběr souborů, které se mají importovat.

Snímek obrazovky s možnostmi zdrojového souboru objektu blob

Tady je ukázka příkazového řádku pro import souborů JSON ze služby 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

Import z kolekce rozhraní SQL API

Možnost importu ze zdroje Azure Cosmos DB umožňuje importovat data z jednoho nebo více kontejnerů Azure Cosmos a volitelně filtrovat dokumenty pomocí dotazu.

Snímek obrazovky s možnostmi zdroje Azure Cosmos DB

Formát připojovacího řetězce Azure Cosmos DB je následující:

AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;

Připojovací řetězec účtu Azure Cosmos DB můžete načíst ze stránky Klíče v Azure Portal, jak je popsáno v tématu Správa účtu Azure Cosmos DB. Název databáze je ale potřeba připojit k připojovacímu řetězci v následujícím formátu:

Database=<CosmosDB Database>;

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance služby Azure Cosmos DB zadaná v poli připojovacího řetězce přístupná.

Pokud chcete importovat z jednoho kontejneru Azure Cosmos, zadejte název kolekce, ze které se mají importovat data. Pokud chcete importovat z více než jednoho kontejneru Azure Cosmos, zadejte regulární výraz, který bude odpovídat jednomu nebo více názvům kolekcí (například collection01 | collection02 | collection03). Volitelně můžete zadat nebo zadat soubor pro dotaz, který filtruje a formuje data, která importujete.

Poznámka

Vzhledem k tomu, že pole kolekce přijímá regulární výrazy, musí být tyto znaky uvozeny odpovídajícím způsobem, pokud importujete z jedné kolekce, jejíž název obsahuje znaky regulárního výrazu.

Možnost importu ze zdroje Azure Cosmos DB nabízí následující pokročilé možnosti:

  1. Include Internal Fields (Zahrnout interní pole): Určuje, jestli se mají do exportu zahrnout systémové vlastnosti dokumentu Azure Cosmos DB (například _rid, _ts).
  2. Number of Retries on Failure (Počet opakování v případě selhání): Určuje, kolikrát se má opakovat pokus o připojení ke službě Azure Cosmos DB v případě přechodného selhání (například přerušení síťového připojení).
  3. Retry Interval (Interval opakování): Určuje, jak dlouho se má počkat před zopakováním pokusu o připojení ke službě Azure Cosmos DB v případě přechodného selhání (například přerušení síťového připojení).
  4. Connection Mode (Režim připojení): Určuje režim připojení ke službě Azure Cosmos DB. Dostupné možnosti jsou DirectTcp, DirectHttps a Gateway. Režimy přímého připojení jsou rychlejší, zatímco režim brány lépe vyhovuje požadavkům brány firewall, protože využívá pouze port 443.

Snímek obrazovky s pokročilými možnostmi zdroje Azure Cosmos DB

Tip

Nástroj pro import jako výchozí režim používá DirectTcp. Pokud máte problémy s bránou firewall, přepněte režim připojení na Gateway, protože vyžaduje pouze port 443.

Tady je několik ukázek příkazového řádku pro import ze služby 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

Nástroj pro import dat Azure Cosmos DB podporuje také import dat z emulátoru služby Azure Cosmos DB. Pokud importujete data z místního emulátoru, nastavte koncový bod na https://localhost:<port>.

Import z HBase

Možnost importu ze zdroje HBase umožňuje importovat data z tabulky HBase a volitelně data filtrovat. K dispozici je několik šablon, které nastavení importu co nejvíce zjednodušují.

Snímek obrazovky s možnostmi zdroje HBase

Snímek obrazovky s možnostmi zdroje HBase a rozbalenou kontextovou nabídkou Filtr

Formát připojovacího řetězce HBase Stargate je následující:

ServiceURL=<server-address>;Username=<username>;Password=<password>

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance HBase zadaná v poli připojovacího řetězce přístupná.

Tady je ukázka příkazového řádku pro import z 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

Import do rozhraní SQL API (hromadný import)

Nástroj pro hromadný import Azure Cosmos DB umožňuje importovat z jakékoli dostupné možnosti zdroje a k zajištění efektivity využívá uloženou proceduru Azure Cosmos DB. Nástroj podporuje import do jednoho kontejneru Azure s Cosmos oddíly. Podporuje také shardovaný import, kdy jsou data rozdělená na více než jeden kontejner Azure s Cosmos oddíly. Další informace o dělení dat najdete v tématu Dělení a škálování ve službě Azure Cosmos DB. Nástroj vytvoří a spustí uloženou proceduru a pak ji odstraní z cílových kolekcí.

Snímek obrazovky s možnostmi hromadného importu do služby Azure Cosmos DB

Formát připojovacího řetězce Azure Cosmos DB je následující:

AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;

Připojovací řetězec účtu služby Azure Cosmos DB můžete načíst ze stránky Klíče na webu Azure Portal, jak je popsáno v tématu Správa účtu služby Azure Cosmos DB, ale k připojovacímu řetězci je potřeba připojit název databáze v následujícím formátu:

Database=<CosmosDB Database>;

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance služby Azure Cosmos DB zadaná v poli připojovacího řetězce přístupná.

Pokud chcete importovat do jedné kolekce, zadejte název kolekce, ze které se mají data importovat, a klikněte na tlačítko Add (Přidat). Pokud chcete importovat do více než jedné kolekce, buď zadejte název každé kolekce jednotlivě, nebo použijte následující syntaxi k určení více než jedné kolekce: collection_prefix[počáteční index – koncový index]. Při zadávání více než jedné kolekce pomocí výše uvedené syntaxe mějte na paměti následující pokyny:

  1. Podporují se pouze vzory pojmenování s rozsahem celých čísel. Například zadáním collection[0-3] se vytvoří následující kolekce: collection0, collection1, collection2, collection3.
  2. Můžete použít zkrácenou syntaxi: collection[3] vytvoří stejnou sadu kolekcí uvedenou v kroku 1.
  3. Je možné zadat více než jedno nahrazení. Například collection[0-1] [0-9] vygeneruje 20 názvů kolekcí s počátečními nulami (collection01, collection02, collection03 atd.).

Po zadání názvů kolekcí zvolte požadovanou propustnost kolekcí (400 až 10 000 RU/s). K zajištění nejlepšího výkonu zvolte vyšší propustnost. Další informace o úrovních výkonu najdete v tématu Úrovně výkonu ve službě Azure Cosmos DB.

Poznámka

Nastavení propustnosti výkonu se použije pouze při vytváření kolekce. Pokud zadaná kolekce již existuje, její propustnost se neupraví.

Při importu do více kolekcí nástroj pro import podporuje horizontální dělení na základě hodnoty hash. V tomto scénáři zadejte vlastnost dokumentu, kterou chcete použít jako klíč oddílu. (Pokud je klíč oddílu prázdný, dokumenty se náhodně horizontálním dělením napříč cílovými kolekcemi.)

Volitelně můžete zadat, které pole ve zdroji importu se má během importu použít jako vlastnost ID dokumentu Azure Cosmos DB. Pokud dokumenty tuto vlastnost nemají, nástroj pro import vygeneruje identifikátor GUID jako hodnotu vlastnosti ID.

Během importu je k dispozici několik pokročilých možností. Za prvé, přestože nástroj vkládá výchozí uloženou proceduru hromadného importu (BulkInsert.js), můžete zadat svou vlastní uloženou proceduru importu:

Snímek obrazovky s možností uložené procedury hromadného vložení do služby Azure Cosmos DB

Kromě toho máte při importování datových typů (například z SQL Serveru nebo MongoDB) na výběr ze tří možností importu:

Snímek obrazovky s možnostmi importu data a času do služby Azure Cosmos DB

  • String (Řetězec): Zachování jako hodnoty řetězce
  • Epoch (Epocha): Zachování jako hodnoty unixového času
  • Both (Obojí): Zachování hodnoty řetězce i hodnoty unixového času. Tato možnost vytvoří vnořený dokument, například: "date_joined": { "Value": "2013-10-21T21:17:25.2410000Z", "Epoch": 1382390245 }

Nástroj pro hromadný import ze služby Azure Cosmos DB nabízí následující další pokročilé možnosti:

  1. Batch Size (Velikost dávky): Nástroj jako výchozí velikost dávky používá 50. Pokud jsou dokumenty určené k importu velké, zvažte snížení velikosti dávky. Pokud jsou dokumenty určené k importu malé, zvažte naopak zvýšení velikosti dávky.
  2. Max Script Size (bytes) (Maximální velikost skriptu v bajtech): Nástroj jako maximální velikost skriptu používá 512 kB.
  3. Zakázat automatické generování ID: Pokud má každý dokument, který se má importovat, pole ID, můžete výběrem této možnosti zvýšit výkon. Dokumenty, které nemají jedinečné pole ID, se neimportují.
  4. Aktualizovat existující dokumenty: Nástroj ve výchozím nastavení nenahrauje existující dokumenty konflikty ID. Výběrem této možnosti můžete přepsat existující dokumenty s odpovídajícími ID. Tato funkce je užitečná pro plánované migrace dat, při kterých se aktualizují stávající dokumenty.
  5. Počet opakování při selhání: Určuje, jak často se má během přechodných selhání opakovat připojení k Azure Cosmos DB (například přerušení připojení k síti).
  6. Retry Interval (Interval opakování): Určuje, jak dlouho se má počkat před zopakováním pokusu o připojení ke službě Azure Cosmos DB v případě přechodného selhání (například přerušení síťového připojení).
  7. Connection Mode (Režim připojení): Určuje režim připojení ke službě Azure Cosmos DB. Dostupné možnosti jsou DirectTcp, DirectHttps a Gateway. Režimy přímého připojení jsou rychlejší, zatímco režim brány lépe vyhovuje požadavkům brány firewall, protože využívá pouze port 443.

Snímek obrazovky s pokročilými možnostmi hromadného importu do služby Azure Cosmos DB

Tip

Nástroj pro import jako výchozí režim používá DirectTcp. Pokud máte problémy s bránou firewall, přepněte režim připojení na Gateway, protože vyžaduje pouze port 443.

Import do rozhraní SQL API (sekvenční import záznamů)

Nástroj pro sekvenční import záznamů Azure Cosmos DB umožňuje importovat z dostupné možnosti zdroje po záznamech. Tuto možnost můžete zvolit, pokud importujete do stávající kolekce, která dosáhla kvóty uložených procedur. Nástroj podporuje import do jednoho kontejneru Azure (s jedním i více oddíly) Cosmos. Podporuje také shardovaný import, kdy jsou data rozdělená na více než jeden kontejner Azure s jedním oddílem nebo Cosmos oddíly. Další informace o dělení dat najdete v tématu Dělení a škálování ve službě Azure Cosmos DB.

Snímek obrazovky s možnostmi sekvenčního importu záznamů do služby Azure Cosmos DB

Formát připojovacího řetězce Azure Cosmos DB je následující:

AccountEndpoint=<CosmosDB Endpoint>;AccountKey=<CosmosDB Key>;Database=<CosmosDB Database>;

Připojovací řetězec pro účet Azure Cosmos DB můžete načíst ze stránky Klíče v Azure Portal, jak je popsáno v tématu Správa účtu Azure Cosmos DB. Název databáze je ale potřeba připojit k připojovacímu řetězci v následujícím formátu:

Database=<Azure Cosmos database>;

Poznámka

Pomocí příkazu Verify se ujistěte, že je instance služby Azure Cosmos DB zadaná v poli připojovacího řetězce přístupná.

Pokud chcete importovat do jedné kolekce, zadejte název kolekce, do které se mají importovat data, a potom klikněte na tlačítko Přidat. Pokud chcete importovat do více kolekcí, zadejte název každé kolekce jednotlivě. K určení více než jedné kolekce můžete použít také následující syntaxi: collection_prefix[počáteční index – koncový index]. Při zadávání více než jedné kolekce prostřednictvím výše uvedené syntaxe mějte na paměti následující pokyny:

  1. Podporují se pouze vzory pojmenování s rozsahem celých čísel. Například zadáním collection[0-3] se vytvoří následující kolekce: collection0, collection1, collection2, collection3.
  2. Můžete použít zkrácenou syntaxi: collection[3] vytvoří stejnou sadu kolekcí uvedenou v kroku 1.
  3. Je možné zadat více než jedno nahrazení. Například collection[0-1] [0-9] vytvoří 20 názvů kolekcí s počátečními nulami (collection01, collection02, collection03 atd.).

Po zadání názvů kolekcí zvolte požadovanou propustnost kolekcí (400 až 250 000 RU/s). K zajištění nejlepšího výkonu zvolte vyšší propustnost. Další informace o úrovních výkonu najdete v tématu Úrovně výkonu ve službě Azure Cosmos DB. Jakýkoli import do kolekce s propustností větší než 10 000 RU/s vyžaduje klíč oddílu. Pokud se rozhodnete, že potřebujete více než 250 000 RU/s, musíte na portálu podat žádost o navýšení limitu účtu.

Poznámka

Nastavení propustnosti se použije pouze při vytváření kolekce nebo databáze. Pokud zadaná kolekce již existuje, její propustnost se neupraví.

Při importu do více než jedné kolekce nástroj pro import podporuje shardování na základě hodnoty hash. V tomto scénáři zadejte vlastnost dokumentu, kterou chcete použít jako klíč oddílu. (Pokud je klíč oddílu prázdný, dokumenty se náhodně horizontálním dělením napříč cílovými kolekcemi.)

Volitelně můžete zadat, které pole ve zdroji importu se má během importu použít jako vlastnost ID dokumentu Azure Cosmos DB. (Pokud dokumenty tuto vlastnost nemají, nástroj pro import vygeneruje identifikátor GUID jako hodnotu vlastnosti ID.)

Během importu je k dispozici několik pokročilých možností. Za prvé, při importování datových typů (například z SQL Serveru nebo MongoDB) máte na výběr ze tří možností importu:

Snímek obrazovky s možnostmi importu data a času do služby Azure Cosmos DB

  • String (Řetězec): Zachování jako hodnoty řetězce
  • Epoch (Epocha): Zachování jako hodnoty unixového času
  • Both (Obojí): Zachování hodnoty řetězce i hodnoty unixového času. Tato možnost vytvoří vnořený dokument, například: "date_joined": { "Value": "2013-10-21T21:17:25.2410000Z", "Epoch": 1382390245 }

Nástroj pro sekvenční import záznamů Azure Cosmos DB nabízí následující další pokročilé možnosti:

  1. Number of Parallel Requests (Počet paralelních požadavků): Nástroj ve výchozím nastavení využívá dva paralelní požadavky. Pokud jsou dokumenty určené k importu malé, zvažte zvýšení počtu paralelních požadavků. Pokud toto číslo zvýšíte příliš, může docházet k omezování rychlosti importu.
  2. Zakázat generování automatického ID: Pokud každý dokument, který chcete importovat, má pole ID, pak výběr této možnosti může zvýšit výkon. V dokumentech chybí pole s jedinečným ID, které se neimportují.
  3. Aktualizovat existující dokumenty: nástroj ve výchozím nastavení nenahrazuje stávající dokumenty s konflikty ID. Výběrem této možnosti povolíte přepsání stávajících dokumentů s vyhovujícími ID. Tato funkce je užitečná pro plánované migrace dat, při kterých se aktualizují stávající dokumenty.
  4. počet opakovaných pokusů o selhání: určuje, jak často se má připojení k Azure Cosmos DB během přechodného selhání (například přerušení připojení k síti) opakovat.
  5. Interval opakování: určuje, jak dlouho se má čekat mezi opakovaným pokusem o připojení k Azure Cosmos DB během přechodného selhání (například přerušení připojení k síti).
  6. Connection Mode (Režim připojení): Určuje režim připojení ke službě Azure Cosmos DB. Dostupné možnosti jsou DirectTcp, DirectHttps a Gateway. Režimy přímého připojení jsou rychlejší, zatímco režim brány lépe vyhovuje požadavkům brány firewall, protože využívá pouze port 443.

Snímek obrazovky s pokročilými možnostmi sekvenčního importu záznamů do služby Azure Cosmos DB

Tip

Nástroj pro import jako výchozí režim používá DirectTcp. Pokud máte problémy s bránou firewall, přepněte režim připojení na Gateway, protože vyžaduje pouze port 443.

Zadání zásady indexování

Když nástroji pro migraci povolíte vytváření kolekcí rozhraní SQL API služby Azure Cosmos DB během importu, můžete zadat zásadu indexování kolekcí. V části pokročilých možností hromadného importu do služby Azure Cosmos DB a sekvenčního importu záznamů do služby Azure Cosmos DB přejděte do části Indexing Policy (Zásady indexování).

snímek obrazovky s rozšířenými možnostmi zásad indexování Azure Cosmos DB

Pomocí pokročilé možnosti Indexing Policy (Zásady indexování) můžete vybrat soubor zásad indexování, ručně zadat zásadu indexování nebo si vybrat ze sady výchozích šablon (kliknutím pravým tlačítkem do textového pole pro zásady indexování).

Nástroj poskytuje následující šablony zásad:

  • Default (Výchozí). Tato zásada je nejvhodnější při provádění dotazů rovnosti s řetězci. Funguje také v případě, že použijete dotazy pořadí podle, rozsah a rovnosti pro čísla. Tato zásada má nižší režijní náklady na úložiště indexů než Range (Rozsah).
  • Range (Rozsah). Tyto zásady jsou doporučené při použití dotazů ORDER BY, Range a rovnosti u čísel i řetězců. Tato zásada má vyšší režijní náklady na úložiště indexů než Default (Výchozí) a Hash (Hodnota hash).

snímek obrazovky s rozšířenými možnostmi nastavení zásad indexování Azure Cosmos DB určení cílových informací

Poznámka

Pokud nezadáte zásadu indexování, použije se výchozí zásada. Další informace o zásadách indexování najdete v tématu Zásady indexování ve službě Azure Cosmos DB.

Export do souboru JSON

Azure Cosmos DB exportér JSON umožňuje exportovat kteroukoli z dostupných možností zdroje do souboru json, který obsahuje pole dokumentů json. Nástroj zpracovává export za vás. Případně se můžete rozhodnout zobrazit výsledný příkaz migrace a spustit příkaz sami. Výsledný soubor JSON je možné uložit místně nebo ve službě Azure Blob Storage.

Snímek obrazovky s možností exportu ze služby Azure Cosmos DB do místního souboru JSON

Snímek obrazovky s možností exportu ze služby Azure Cosmos DB do souboru JSON ve službě Azure Blob Storage

Volitelně můžete zvolit, aby se prettify výsledný kód JSON. Tato akce zvětší velikost výsledného dokumentu a tím umožní lepší čitelnost obsahu.

  • Standardní export JSON

    [{"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"}]}]
    
  • Export JSON prettified

      [
       {
      "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"
        }
      ]
      }]
    

Tady je ukázka příkazového řádku pro export souboru JSON do služby 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

Pokročilá konfigurace

Na obrazovce Advanced configuration (Pokročilá konfigurace) zadejte umístění souboru protokolu, do kterého chcete zapisovat případné chyby. Na tuto stránku se vztahují následující pravidla:

  1. Pokud není zadaný název souboru, vrátí se na stránce výsledků všechny chyby.

  2. Pokud je zadaný název souboru bez adresáře, soubor se vytvoří (nebo přepíše) v aktuálním adresáři prostředí.

  3. Pokud vyberete existující soubor, soubor bude přepsán, ale není k dispozici možnost připojit.

  4. Pak zvolte, jestli se mají protokolovat všechny chybové zprávy, kritické chybové zprávy, nebo se nemají protokolovat žádné. Nakonec se rozhodněte, jak často se bude aktualizovat průběh ve zprávě o přenosu na obrazovce.

    Snímek obrazovky rozšířené konfigurace

Potvrzení nastavení importu a příkazového řádku pro zobrazení

  1. Až zadáte informace o zdroji, cílové informace a pokročilou konfiguraci, zkontrolujte souhrn migrace a zobrazte nebo zkopírujte Výsledný příkaz migrace, pokud chcete. (Kopírování příkazu je užitečné pro automatizaci operací importu.)

    Snímek obrazovky se souhrnem.

    Snímek obrazovky se souhrnem s příkazovým řádkem ve verzi Preview

  2. Jakmile budete s možnostmi zdroje a cíle spokojeni, klikněte na Import (Importovat). V průběhu importu se aktualizuje uplynulý čas, počet přenesených souborů a informace o selháních (pokud jste nezadali název souboru v pokročilé konfiguraci). Po dokončení můžete výsledky exportovat (například pro účely řešení případných selhání importu).

    snímek obrazovky Azure Cosmos DB možnosti exportu JSON

  3. Nový import můžete spustit také tak, že resetujete všechny hodnoty nebo zachováte stávající nastavení. (Například se můžete rozhodnout, že chcete zachovat informace o připojovacím řetězci, zdroj a cíl a další možnosti.)

    snímek obrazovky Azure Cosmos DB možnosti exportu JSON s dialogovým oknem nové potvrzení importu.

Další kroky

V tomto kurzu jste provedli následující úlohy:

  • Instalace nástroje pro migraci dat
  • Import dat z různých zdrojů dat
  • Export ze služby Azure Cosmos DB do formátu JSON

Teď můžete pokračovat k dalšímu kurzu, kde zjistíte, jak dotazovat data pomocí služby Azure Cosmos DB.

chcete se pokusit plánování kapacity pro migraci na Azure Cosmos DB?