Copiare e trasformare i dati in Database di Azure per MySQL usando Azure Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Questo articolo illustra come usare l'attività di copia in Azure Data Factory per copiare dati da e in Database di Azure per MySQL e usare Flusso di dati per trasformare i dati in Database di Azure per MySQL. Per altre informazioni su Azure Data Factory, vedere l'articolo introduttivo.

Questo connettore è specializzato per il servizio Database di Azure per MySQL. Per copiare dati da un database MySQL generico in locale o nel cloud, usare il connettore MySQL.

Funzionalità supportate

Questo connettore di Database di Azure per MySQL è supportato per le attività seguenti:

Guida introduttiva

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Le sezioni seguenti riportano informazioni dettagliate sulle proprietà usate per definire entità di data factory specifiche in un connettore del database Azure per MySQL.

Proprietà del servizio collegato

Per il servizio collegato del database di Azure per MySQL sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type deve essere impostata su: AzureMySql
connectionString Specifica le informazioni necessarie per connettersi all'istanza del database di Azure per MySQL.
È anche possibile inserire la password in Azure Key Vault ed eseguire lo spostamento forzato dei dati della configurazione password all'esterno della stringa di connessione. Vedere gli esempi seguenti e l'articolo Archiviare le credenziali in Azure Key Vault per altri dettagli.
connectVia Il runtime di integrazione da usare per la connessione all'archivio dati. È possibile usare il runtime di integrazione di Azure o il runtime di integrazione self-hosted (se l'archivio dati si trova in una rete privata). Se non specificato, viene usato il runtime di integrazione di Azure predefinito. No

Una stringa di connessione tipica è Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. Altre proprietà che è possibile impostare per il case:

Proprietà Descrizione Opzioni Obbligatoria
SSLMode Questa opzione specifica se il driver usa la crittografia TLS e verifica la connessione a MySQL. ad esempio SSLMode=<0/1/2/3/4> DISABLED (0) / PREFERRED (1) (impostazione predefinita) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) No
UseSystemTrustStore Questa opzione specifica se usare o meno un certificato CA dall'archivio di attendibilità di sistema o da un file PEM specificato. ad esempio UseSystemTrustStore=<0/1>; Abilitato (1) / Disabilitato (0) (impostazione predefinita) No

Esempio:

{
    "name": "AzureDatabaseForMySQLLinkedService",
    "properties": {
        "type": "AzureMySql",
        "typeProperties": {
            "connectionString": "Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio: archiviare la password in Azure Key Vault

{
    "name": "AzureDatabaseForMySQLLinkedService",
    "properties": {
        "type": "AzureMySql",
        "typeProperties": {
            "connectionString": "Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione di set di dati, vedere l'articolo sui set di dati. Questa sezione presenta un elenco delle proprietà supportate dal set di dati del database di Azure per MySQL.

Per copiare dati dal database di Azure per MySQL, impostare la proprietà type del set di dati su AzureMySqlTable. Sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type del set di dati deve essere impostata su AzureMySqlTable
tableName Nome della tabella nel database MySQL. No (se nell'origine dell'attività è specificato "query")

Esempio

{
    "name": "AzureMySQLDataset",
    "properties": {
        "type": "AzureMySqlTable",
        "linkedServiceName": {
            "referenceName": "<Azure MySQL linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "tableName": "<table name>"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione fornisce un elenco delle proprietà supportate dall'origine e dal sink di Database di Azure per MySQL.

Database di Azure per MySQL come origine

Per copiare dati da Database di Azure per MySQL, nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type dell'origine dell'attività di copia deve essere impostata su: AzureMySqlSource
query Usare la query SQL personalizzata per leggere i dati. Ad esempio: "SELECT * FROM MyTable". No (se nel set di dati è specificato "tableName")
queryCommandTimeout Tempo di attesa prima del timeout della richiesta di query. Il valore predefinito è 120 minuti (02:00:00) No

Esempio:

"activities":[
    {
        "name": "CopyFromAzureDatabaseForMySQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure MySQL input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzureMySqlSource",
                "query": "<custom query e.g. SELECT * FROM MyTable>"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Database di Azure per MySQL come sink

Per copiare dati in Database di Azure per MySQL, nella sezione sink dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
type La proprietà type del sink dell'attività di copia deve essere impostata su: AzureMySqlSink
preCopyScript Specificare una query SQL per l'attività di copia da eseguire prima di scrivere i dati in Database di Azure per MySQL in ogni esecuzione. È possibile usare questa proprietà per pulire i dati precaricati. No
writeBatchSize Inserisce i dati nella tabella di Database di Azure per MySQL quando le dimensioni del buffer raggiungono writeBatchSize.
Il valore consentito è un numero intero che rappresenta il numero di righe.
No (il valore predefinito è 10.000)
writeBatchTimeout Tempo di attesa per l'operazione di inserimento batch da completare prima del timeout.
I valori consentiti sono un intervallo di tempo. Ad esempio "00:30:00" (30 minuti).
No (il valore predefinito è 00:00:30)

Esempio:

"activities":[
    {
        "name": "CopyToAzureDatabaseForMySQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure MySQL output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureMySqlSink",
                "preCopyScript": "<custom SQL script>",
                "writeBatchSize": 100000
            }
        }
    }
]

Proprietà del flusso di dati per mapping

Quando si trasformano i dati nel flusso di dati di mapping, è possibile leggere e scrivere nelle tabelle da Database di Azure per MySQL. Per altre informazioni, vedere la trasformazione origine e la trasformazione sink nei flussi di dati per mapping. È possibile scegliere di usare un set di dati di Database di Azure per MySQL o un set di dati inline come tipo di origine e sink.

Trasformazione origine

La tabella seguente elenca le proprietà supportate dall'origine di Database di Azure per MySQL. È possibile modificare queste proprietà nella scheda Opzioni di origine.

Nome Descrizione Obbligatoria Valori consentiti Proprietà dello script del flusso di dati
Tabella Se si seleziona Tabella come input, il flusso di dati recupera tutti i dati dalla tabella specificata nel set di dati. No - (solo per set di dati inline)
tableName
Query Se si seleziona Query come input, specificare una query SQL per recuperare i dati dall'origine, che sostituisce qualsiasi tabella specificata nel set di dati. L'uso di query è un ottimo modo per ridurre le righe per i test o le ricerche.

La clausola Order By non è supportata, ma è possibile impostare un'istruzione SELECT FROM completa. È possibile usare anche funzioni di tabella definite dall'utente. select * from udfGetData() è una funzione definita dall'utente in SQL che restituisce una tabella che è possibile usare nel flusso di dati.
Esempio di query: select * from mytable where customerId > 1000 and customerId < 2000 o select * from "MyTable" .
No string query
Dimensioni dei batch Specificare le dimensioni di un batch per il blocco di dati di grandi dimensioni in batch. No Intero batchSize
Livello di isolamento Scegliere uno dei livelli di isolamento seguenti:
- Read Committed
- Lettura non di cui è stato eseguito ilcommitted (impostazione predefinita)
- Lettura ripetibile
- Serializzabile
- Nessuno (ignora il livello di isolamento)
No READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERIALIZABLE
Nessuno
isolationLevel

Esempio di script di origine di Database di Azure per MySQL

Quando si usa Database di Azure per MySQL come tipo di origine, lo script del flusso di dati associato è:

source(allowSchemaDrift: true,
    validateSchema: false,
    isolationLevel: 'READ_UNCOMMITTED',
    query: 'select * from mytable',
    format: 'query') ~> AzureMySQLSource

Trasformazione sink

La tabella seguente elenca le proprietà supportate dal sink di Database di Azure per MySQL. È possibile modificare queste proprietà nella scheda Opzioni sink.

Nome Descrizione Obbligatoria Valori consentiti Proprietà script del flusso di dati
Update (metodo) Specificare le operazioni consentite nella destinazione del database. Per impostazione predefinita, sono consentiti solo gli inserimenti.
Per aggiornare, eseguire l'upsert o eliminare righe, è necessaria una trasformazione Modifica riga per contrassegnare le righe per tali azioni.
true o false tabella deletable
Inseribile
Aggiornabile
upsertable
Colonne chiave Per aggiornamenti, upsert ed eliminazioni, le colonne chiave devono essere impostate per determinare la riga da modificare.
Il nome della colonna scelto come chiave verrà usato come parte dell'aggiornamento successivo, upsert, delete. Pertanto, è necessario selezionare una colonna esistente nel mapping sink.
No Array chiavi
Ignorare la scrittura delle colonne chiave Se non si vuole scrivere il valore nella colonna chiave, selezionare "Skip writing key columns" (Ignora scrittura colonne chiave). No true o false skipKeyWrites
azione Tabella Determina se ricreare o rimuovere tutte le righe dalla tabella di destinazione prima della scrittura.
- Nessuno: non verrà eseguita alcuna azione per la tabella.
- Ricrea: la tabella verrà eliminata e ricreata. Questa opzione è obbligatoria se si crea una nuova tabella in modo dinamico.
- Troncamento: tutte le righe della tabella di destinazione verranno rimosse.
No true o false Ricreare
truncate
Dimensioni dei batch Specificare il numero di righe scritte in ogni batch. Dimensioni batch più grandi migliorano l'ottimizzazione della compressione e della memoria, ma rischiano di causare eccezioni di memoria insufficiente durante la memorizzazione nella cache dei dati. No Intero batchSize
Pre e post-script SQL Specificare gli script SQL su più righe che verranno eseguiti prima (pre-elaborazione) e dopo la scrittura dei dati (post-elaborazione) nel database Sink. No string preSQLs
postSQLs

Esempio di script sink di Database di Azure per MySQL

Quando si usa Database di Azure per MySQL come tipo di sink, lo script del flusso di dati associato è:

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:false,
    insertable:true,
    updateable:true,
    upsertable:true,
    keys:['keyColumn'],
    format: 'table',
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> AzureMySQLSink

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Mapping dei tipi di dati per il database di Azure per MySQL

Quando si copiano dati dal database di Azure per MySQL, vengono usati i mapping seguenti tra i tipi di dati MySQL e i tipi di dati provvisori di Azure Data Factory. Vedere Mapping dello schema e del tipo di dati per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink.

Tipo di dati del database di Azure per MySQL Tipo di dati provvisori di Data Factory
bigint Int64
bigint unsigned Decimal
bit Boolean
bit(M), M>1 Byte[]
blob Byte[]
bool Int16
char String
date Datetime
datetime Datetime
decimal Decimal, String
double Double
double precision Double
enum String
float Single
int Int32
int unsigned Int64
integer Int32
integer unsigned Int64
long varbinary Byte[]
long varchar String
longblob Byte[]
longtext String
mediumblob Byte[]
mediumint Int32
mediumint unsigned Int64
mediumtext String
numeric Decimal
real Double
set String
smallint Int16
smallint unsigned Int32
text String
time TimeSpan
timestamp Datetime
tinyblob Byte[]
tinyint Int16
tinyint unsigned Int16
tinytext String
varchar String
year Int32

Passaggi successivi

Per un elenco degli archivi dati supportati come origini o sink dall'attività di copia in Azure Data Factory, vedere gli archivi dati supportati.