Il modello Oracle to BigQuery è una pipeline batch che copia i dati da una tabella Oracle in una tabella BigQuery esistente. Questa pipeline utilizza JDBC per connettersi a Oracle. Per un ulteriore livello di protezione, puoi anche passare una chiave Cloud KMS insieme a parametri di stringa di connessione, nome utente e password codificati in Base64 criptati con la chiave Cloud KMS. Per ulteriori informazioni sulla crittografia del nome utente, della password e dei parametri della stringa di connessione, consulta l'endpoint di crittografia dell'API Cloud KMS.
Requisiti della pipeline
- La tabella BigQuery deve esistere prima dell'esecuzione della pipeline.
- La tabella BigQuery deve avere uno schema compatibile.
- Il database relazionale deve essere accessibile dalla subnet in cui viene eseguito Dataflow.
Parametri del modello
Parametri obbligatori
- driverJars: l'elenco separato da virgole dei file JAR del driver. Ad esempio,
gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar
. - driverClassName: il nome della classe del driver JDBC. Ad esempio,
com.mysql.jdbc.Driver
. - connectionURL: la stringa dell'URL di connessione JDBC. Ad esempio,
jdbc:mysql://some-host:3306/sampledb
. Puoi passare questo valore come stringa criptata con una chiave Cloud KMS e poi codificata in Base64. Rimuovi i caratteri di spaziatura dalla stringa codificata Base64. Tieni presente la differenza tra una stringa di connessione al database Oracle non RAC (jdbc:oracle:thin:@some-host:<port>:<sid>
) e una stringa di connessione al database Oracle RAC (jdbc:oracle:thin:@//some-host[:<port>]/<service_name>
). Ad esempio,jdbc:mysql://some-host:3306/sampledb
. - outputTable: la posizione della tabella di output BigQuery. Ad esempio,
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>
. - bigQueryLoadingTemporaryDirectory: la directory temporanea per il processo di caricamento di BigQuery. Ad esempio,
gs://your-bucket/your-files/temp_dir
.
Parametri facoltativi
- connectionProperties: la stringa di proprietà da utilizzare per la connessione JDBC. Il formato della stringa deve essere
[propertyName=property;]*
.Per ulteriori informazioni, consulta le proprietà di configurazione (https://dev.mysql.com/doc/connector-j/it/connector-j-reference-configuration-properties.html) nella documentazione di MySQL. Ad esempio:unicode=true;characterEncoding=UTF-8
. - username: il nome utente da utilizzare per la connessione JDBC. Può essere passato come stringa criptata con una chiave Cloud KMS oppure può essere un secret di Secret Manager nel formato projects/{project}/secrets/{secret}/versions/{secret_version}.
- password: la password da utilizzare per la connessione JDBC. Può essere passato come stringa criptata con una chiave Cloud KMS oppure può essere un secret di Secret Manager nel formato projects/{project}/secrets/{secret}/versions/{secret_version}.
- query: la query da eseguire sull'origine per estrarre i dati. Tieni presente che alcuni tipi JDBC SQL e BigQuery, pur condividendo lo stesso nome, presentano alcune differenze. Alcune mappature di tipi SQL -> BigQuery importanti da tenere a mente sono
DATETIME --> TIMESTAMP
. Potrebbe essere necessario il passaggio di tipo se gli schemi non corrispondono. Ad esempio:select * from sampledb.sample_table
. - KMSEncryptionKey: la chiave di crittografia Cloud KMS da utilizzare per decriptare il nome utente, la password e la stringa di connessione. Se passi una chiave Cloud KMS, devi anche criptare il nome utente, la password e la stringa di connessione. Ad esempio,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
. - useColumnAlias: se impostato su
true
, la pipeline utilizza l'alias della colonna (AS
) anziché il nome della colonna per mappare le righe a BigQuery. Il valore predefinito èfalse
. - isTruncate: se impostato su
true
, la pipeline viene troncata prima del caricamento dei dati in BigQuery. Il valore predefinito èfalse
, che fa sì che la pipeline aggiunga i dati. - partitionColumn: se viene specificato
partitionColumn
insieme atable
, JdbcIO legge la tabella in parallelo eseguendo più istanze della query sulla stessa tabella (sottoquery) utilizzando gli intervalli. Attualmente supporta le colonne di partizioneLong
eDateTime
. Passa il tipo di colonna tramitepartitionColumnType
. - partitionColumnType: il tipo di
partitionColumn
, accettalong
odatetime
. Il valore predefinito è: long. - table: la tabella da leggere quando si utilizzano le partizioni. Questo parametro accetta anche una sottoquery tra parentesi. Ad esempio,
(select id, name from Person) as subq
. - numPartitions: il numero di partizioni. Con i limiti inferiore e superiore, questo valore forma gli intervalli di partizione per le espressioni della clausola
WHERE
generate che vengono utilizzate per suddividere la colonna della partizione in modo uniforme. Quando l'input è inferiore a1
, il numero viene impostato su1
. - lowerBound: il limite inferiore da utilizzare nello schema di partizione. Se non viene fornito, questo valore viene dedotto automaticamente da Apache Beam per i tipi supportati.
datetime
partitionColumnType accetta il limite inferiore nel formatoyyyy-MM-dd HH:mm:ss.SSSZ
. Ad esempio:2024-02-20 07:55:45.000+03:30
. - upperBound: il limite superiore da utilizzare nello schema di partizione. Se non viene fornito, questo valore viene dedotto automaticamente da Apache Beam per i tipi supportati.
datetime
partitionColumnType accetta il limite superiore nel formatoyyyy-MM-dd HH:mm:ss.SSSZ
. Ad esempio:2024-02-20 07:55:45.000+03:30
. - fetchSize: il numero di righe da recuperare dal database alla volta. Non utilizzato per le letture partizionate. Il valore predefinito è 50000.
- createDisposition: il valore CreateDisposition di BigQuery da utilizzare. Ad esempio,
CREATE_IF_NEEDED
oCREATE_NEVER
. Il valore predefinito è CREATE_NEVER. - bigQuerySchemaPath: il percorso di Cloud Storage per lo schema JSON di BigQuery. Se
createDisposition
è impostato suCREATE_IF_NEEDED
, questo parametro deve essere specificato. Ad esempio:gs://your-bucket/your-schema.json
. - outputDeadletterTable: la tabella BigQuery da utilizzare per i messaggi che non sono riusciti a raggiungere la tabella di output, formattata come
"PROJECT_ID:DATASET_NAME.TABLE_NAME"
. Se la tabella non esiste, viene creata quando viene eseguita la pipeline. Se questo parametro non viene specificato, la pipeline non andrà a buon fine in caso di errori di scrittura.Questo parametro può essere specificato solo seuseStorageWriteApi
ouseStorageWriteApiAtLeastOnce
è impostato su true. - disabledAlgorithms: gli algoritmi da disattivare separati da virgola. Se questo valore è impostato su
none
, nessun algoritmo è disattivato. Utilizza questo parametro con cautela, perché gli algoritmi disattivati per impostazione predefinita potrebbero presentare vulnerabilità o problemi di prestazioni. Ad esempio:SSLv3, RC4
. - extraFilesToStage: percorsi Cloud Storage separati da virgole o secret Secret Manager per i file da eseguire in staging nel worker. Questi file vengono salvati nella directory /extra_files in ogni worker. Ad esempio,
gs://<BUCKET_NAME>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>
. - useStorageWriteApi: se
true
, la pipeline utilizza l'API BigQuery Storage di scrittura (https://cloud.google.com/bigquery/docs/write-api). Il valore predefinito èfalse
. Per ulteriori informazioni, consulta Utilizzo dell'API Storage Write (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce: quando utilizzi l'API Storage Write, specifica la semantica di scrittura. Per utilizzare la semantica almeno una volta (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), imposta questo parametro su
true
. Per utilizzare la semantica esattamente una volta, imposta il parametro sufalse
. Questo parametro si applica solo quandouseStorageWriteApi
ètrue
. Il valore predefinito èfalse
.
Esegui il modello
Console
- Vai alla pagina Crea job da modello di Dataflow. Vai a Crea job da modello
- Nel campo Nome job, inserisci un nome univoco per il job.
- (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è
us-central1
.Per un elenco delle regioni in cui puoi eseguire un job Dataflow, consulta Località di Dataflow.
- Nel menu a discesa Modello di flusso di dati, seleziona the Oracle to BigQuery template.
- Nei campi dei parametri forniti, inserisci i valori dei parametri.
- Fai clic su Esegui job.
Interfaccia a riga di comando gcloud
Nella shell o nel terminale, esegui il modello:
gcloud dataflow flex-template run JOB_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Oracle_to_BigQuery \ --parameters \ connectionURL=JDBC_CONNECTION_URL,\ query=SOURCE_SQL_QUERY,\ outputTable=PROJECT_ID:DATASET.TABLE_NAME, bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\ connectionProperties=CONNECTION_PROPERTIES,\ username=CONNECTION_USERNAME,\ password=CONNECTION_PASSWORD,\ KMSEncryptionKey=KMS_ENCRYPTION_KEY
Sostituisci quanto segue:
JOB_NAME
: un nome di job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella principale senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
JDBC_CONNECTION_URL
: l'URL di connessione JDBCSOURCE_SQL_QUERY
: la query SQL da eseguire sul database di origineDATASET
: il tuo set di dati BigQueryTABLE_NAME
: il nome della tabella BigQueryPATH_TO_TEMP_DIR_ON_GCS
: il percorso di Cloud Storage alla directory temporaneaCONNECTION_PROPERTIES
: le proprietà di connessione JDBC, se necessarioCONNECTION_USERNAME
: il nome utente della connessione JDBCCONNECTION_PASSWORD
: la password di connessione JDBCKMS_ENCRYPTION_KEY
: la chiave di crittografia Cloud KMS
API
Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per ulteriori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "jobName": "JOB_NAME", "parameters": { "connectionURL": "JDBC_CONNECTION_URL", "query": "SOURCE_SQL_QUERY", "outputTable": "PROJECT_ID:DATASET.TABLE_NAME", "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS", "connectionProperties": "CONNECTION_PROPERTIES", "username": "CONNECTION_USERNAME", "password": "CONNECTION_PASSWORD", "KMSEncryptionKey":"KMS_ENCRYPTION_KEY" }, "environment": { "zone": "us-central1-f" } }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progetto Google Cloud in cui vuoi eseguire il job DataflowJOB_NAME
: un nome di job univoco a tua sceltaVERSION
: la versione del modello che vuoi utilizzarePuoi utilizzare i seguenti valori:
latest
per utilizzare la versione più recente del modello, disponibile nella cartella principale senza data del bucket: gs://dataflow-templates-REGION_NAME/latest/- il nome della versione, ad esempio
2023-09-12-00_RC00
, per utilizzare una versione specifica del modello, che si trova nidificata nella rispettiva cartella principale datata nel bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempious-central1
JDBC_CONNECTION_URL
: l'URL di connessione JDBCSOURCE_SQL_QUERY
: la query SQL da eseguire sul database di origineDATASET
: il tuo set di dati BigQueryTABLE_NAME
: il nome della tabella BigQueryPATH_TO_TEMP_DIR_ON_GCS
: il percorso di Cloud Storage alla directory temporaneaCONNECTION_PROPERTIES
: le proprietà di connessione JDBC, se necessarioCONNECTION_USERNAME
: il nome utente della connessione JDBCCONNECTION_PASSWORD
: la password di connessione JDBCKMS_ENCRYPTION_KEY
: la chiave di crittografia Cloud KMS