Pianificare un trasferimento PostgreSQL

Il connettore BigQuery Data Transfer Service per PostgreSQL aiuta gli utenti a creare job di trasferimento dati ricorrenti e on demand per trasferire i dati dalla loro istanza PostgreSQL a BigQuery. Il connettore supporta le istanze PostgreSQL ospitate nel tuo ambiente on-premise, Cloud SQL e altri provider cloud pubblico come Amazon Web Services (AWS) e Microsoft Azure.

Limitazioni

I trasferimenti di dati PostgreSQL sono soggetti alle seguenti limitazioni:

  • Il numero massimo di esecuzioni di trasferimento simultanee in un singolo database PostgreSQL è determinato dal numero massimo di connessioni simultanee supportate dal database PostgreSQL. Il numero di job di trasferimento simultaneo deve essere limitato a un valore inferiore al numero massimo di connessioni simultanee supportate dal database PostgreSQL.
  • In PostgreSQL, alcuni tipi di dati sono mappati al tipo di stringa in BigQuery per evitare la perdita di dati. Ad esempio, i tipi numerici definiti in PostgreSQL che non hanno una precisione e una scala definite vengono mappati al tipo di stringa in BigQuery.

Prima di iniziare

Ruoli obbligatori

Se intendi configurare le notifiche di esecuzione del trasferimento per Pub/Sub, assicurati di disporre dell'autorizzazione pubsub.topics.setIamPolicy Identity and Access Management (IAM) . Le autorizzazioni Pub/Sub non sono necessarie se configuri solo le notifiche via email. Per saperne di più, consulta Notifiche di esecuzione di BigQuery Data Transfer Service.

Per ottenere le autorizzazioni necessarie per creare un trasferimento di dati PostgreSQL, chiedi all'amministratore di concederti il ruolo IAM Amministratore BigQuery (roles/bigquery.admin) nel tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un trasferimento di dati PostgreSQL. Per visualizzare le autorizzazioni esatta richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per creare un trasferimento di dati PostgreSQL, sono necessarie le seguenti autorizzazioni:

  • bigquery.transfers.update
  • bigquery.datasets.get

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Connessioni di rete

Se non è disponibile un indirizzo IP pubblico per la connessione al database PostgreSQL, devi configurare un allegato di rete.

Per istruzioni dettagliate sulla configurazione della rete richiesta, consulta i seguenti documenti:

Configurare un trasferimento di dati PostgreSQL

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina Trasferimenti di dati.

    Vai a Trasferimenti dati

  2. Fai clic su Crea trasferimento.

  3. Nella sezione Tipo di origine, per Origine, seleziona PostgreSQL.

  4. Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome per il trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.

  5. Nella sezione Opzioni di pianificazione, segui questi passaggi:

    • Seleziona una frequenza di ripetizione. Se selezioni l'opzione Ore, Giorni (valore predefinito), Settimane o Mesi, devi anche specificare una frequenza. Puoi anche selezionare l'opzione Personalizzata per creare una frequenza di ripetizione più specifica. Se selezioni l'opzione On demand, questo trasferimento di dati viene eseguito solo quando attivi manualmente il trasferimento.
    • Se applicabile, seleziona l'opzione Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.
  6. Nella sezione Impostazioni destinazione, per Set di dati, seleziona il set di dati che hai creato per archiviare i dati oppure fai clic su Crea nuovo set di dati e creane uno da utilizzare come set di dati di destinazione.

  7. Nella sezione Dettagli origine dati, segui questi passaggi:

    • In Collegamento di rete, seleziona un collegamento di rete esistente o fai clic su Crea collegamento di rete. Per ulteriori informazioni, consulta la sezione Connessioni di rete di questo documento.
    • In Host, inserisci il nome host o l'indirizzo IP del server del database PostgreSQL.
    • In Numero porta, inserisci il numero di porta per il server del database PostgreSQL.
    • In Nome database, inserisci il nome del database PostgreSQL.
    • In Nome utente, inserisci il nome utente dell'utente PostgreSQL che avvia la connessione al database PostgreSQL.
    • In Password, inserisci la password dell'utente PostgreSQL che avvia la connessione al database PostgreSQL.
    • Per gli oggetti PostgreSQL da trasferire, svolgi una delle seguenti operazioni:

      • Fai clic su Sfoglia per selezionare le tabelle PostgreSQL necessarie per il trasferimento, quindi fai clic su Seleziona.
      • Inserisci manualmente i nomi delle tabelle negli oggetti PostgreSQL da trasferire.

    Dettagli dell'origine dati nella pagina Crea trasferimento

  8. (Facoltativo) Nel menu Account di servizio, specifica un account di servizio personalizzato per autorizzare il trasferimento. Assicurati che l'account di servizio utilizzato disponga di tutti i ruoli e le autorizzazioni necessari. Per ulteriori informazioni, consulta Trasferire il proprietario come service account.

  9. (Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:

    • Per attivare le notifiche via email, fai clic sul pulsante di attivazione/disattivazione Notifiche via email in modo da impostarlo su On. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
    • Per configurare le notifiche di esecuzione di Pub/Sub per il trasferimento, fai clic sul pulsante di attivazione/disattivazione Notifiche Pub/Sub in modo che sia impostato su On. Puoi selezionare il nome del tuo argomento oppure fare clic su Crea un argomento per crearne uno.
  10. Fai clic su Salva.

bq

Inserisci il comando bq mk e specifica il flag di creazione del trasferimento --transfer_config:

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

Sostituisci quanto segue:

  • PROJECT_ID (facoltativo): l'ID del tuo progetto Google Cloud . Se non viene fornito il flag --project_id per specificare un determinato progetto, viene utilizzato il progetto predefinito.
  • DATA_SOURCE: l'origine dati, ovvero postgresql.
  • DISPLAY_NAME: il nome visualizzato per la configurazione del trasferimento dei dati. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
  • DATASET: il set di dati di destinazione per la configurazione del trasferimento di dati.
  • PARAMETERS: i parametri per la configurazione del trasferimento creata in formato JSON. Ad esempio: --params='{"param":"param_value"}'. Di seguito sono riportati i parametri per un trasferimento PostgreSQL:

    • networkAttachment (facoltativo): il nome dell'attacco di rete per collegarsi al database PostgreSQL.
    • connector.database: il nome del database PostgreSQL.
    • connector.endpoint.host: il nome host o l'indirizzo IP del database.
    • connector.endpoint.port: il numero di porta del database.
    • connector.authentication.username: il nome utente dell'utente database.
    • connector.authentication.password: la password dell'utente del database.
    • assets: un elenco dei nomi delle tabelle PostgreSQL da trasferire dal database PostgreSQL nell'ambito del trasferimento.

Ad esempio, il seguente comando crea un trasferimento PostgreSQL chiamato My Transfer:

bq mk \
    --transfer_config \
    --target_dataset=mydataset \
    --data_source=postgresql \
    --display_name='My Transfer' \
    --params='{"assets":["DB1/PUBLIC/DEPARTMENT","DB1/PUBLIC/EMPLOYEES"], \
        "connector.authentication.username": "User1", \
        "connector.authentication.password":"ABC12345", \
        "connector.database":"DB1", \
        "Connector.endpoint.host":"192.168.0.1", \
        "Connector.endpoint.port":"1520"}' 

API

Utilizza il metodo projects.locations.transferConfigs.create e fornisci un'istanza della risorsa TransferConfig.

Mappatura dei tipi di dati

La tabella seguente mappa i tipi di dati PostgreSQL ai tipi di dati BigQuery corrispondenti.

Tipo di dati PostgreSQL Tipo di dati BigQuery
bigint INTEGER
bigserial INTEGER
bit(n) STRING
bit varying(n) STRING
boolean BOOLEAN
bytea BYTES
character STRING
character varying STRING
double precision FLOAT
integer INTEGER
numeric(precision, scale)/decimal(precision, scale) NUMERIC
real FLOAT
smallint INTEGER
smallserial INTEGER
serial INTEGER
text INTEGER
date DATE
time [ (p) ] [ without timezone ] TIMESTAMP
time [ (p) ] with time zone TIMESTAMP
timestamp [ (p) ] [ without timezone ] TIMESTAMP
timestamp [ (p) ] with time zone TIMESPAMP
xml STRING
tsquery STRING
tsvector STRING
uuid STRING
box STRING
cidr STRING
circle STRING
inet STRING
interval STRING
json STRING
jsonb STRING
line STRING
lseg STRING
macaddr STRING
macaddr8 STRING
money STRING
path STRING
point STRING
polygon STRING

Risoluzione dei problemi

Se hai problemi a configurare il trasferimento dei dati, consulta Problemi di trasferimento PostgreSQL.

Passaggi successivi