Utilizzo dell'utilità BCP di Linux per importare ed esportare dati - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo dell'utilità BCP di Linux per importare ed esportare dati

L'utilità BCP (Bulk Copy Program) offre un modo efficiente per trasferire grandi quantità di dati tra l'istanza DB di RDS for SQL Server e i file di dati. È possibile utilizzare BCP da ambienti Linux per eseguire operazioni di massa sui dati, rendendolo utile per la migrazione dei dati, i processi ETL e i trasferimenti regolari di dati.

BCP supporta sia l'importazione di dati dai file nelle tabelle di SQL Server sia l'esportazione di dati dalle tabelle di SQL Server ai file. Ciò è particolarmente efficace per il trasferimento di dati strutturati in vari formati, inclusi file di testo delimitati.

Prerequisiti

Prima di utilizzare BCP con l'istanza DB di RDS for SQL Server da Linux, assicurati di disporre di quanto segue:

  • Un ambiente Linux con connettività di rete all'istanza DB di RDS per SQL Server

  • Strumenti da riga di comando di Microsoft SQL Server installati sul sistema Linux, tra cui:

    • sqlcmd - strumento di interrogazione da riga di comando di SQL Server

    • bcp - Utilità del programma Bulk Copy

  • Credenziali valide per l'istanza DB di RDS per SQL Server

  • Accesso alla rete configurato tramite gruppi di sicurezza per consentire le connessioni sulla porta SQL Server (in genere 1433)

  • Autorizzazioni di database appropriate per le operazioni che si desidera eseguire

Installazione degli strumenti da riga di comando di SQL Server su Linux

Per utilizzare BCP da Linux, è necessario installare gli strumenti da riga di comando di Microsoft SQL Server. Per istruzioni di installazione dettagliate per la distribuzione Linux specifica, consulta la seguente documentazione Microsoft:

Dopo l'installazione, assicurati che gli strumenti siano disponibili nel tuo PATH eseguendo:

bcp -v sqlcmd -?

Esportazione di dati da Amazon RDS per SQL Server

È possibile utilizzare BCP per esportare i dati dall'istanza DB di RDS per SQL Server in file sul sistema Linux. Ciò è utile per creare backup, analizzare i dati o preparare i dati per la migrazione.

Sintassi di esportazione di base

La sintassi di base per l'esportazione di dati tramite BCP è:

bcp database.schema.table out output_file -S server_name -U username -P password [options]

Dove:

  • database.schema.table- Il nome completo della tabella

  • output_file- Il percorso e il nome del file di output

  • server_name- L'endpoint RDS per SQL Server

  • username- Il nome utente del database

  • password- La tua password del database

Esempio di esportazione

L'esempio seguente esporta i dati da una tabella denominata customers nel sales database:

bcp sales.dbo.customers out /home/user/customers.txt \ -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \ -U admin \ -P mypassword \ -c \ -t "|" \ -r "\n"

Questo comando:

  • Esporta i dati dalla customers tabella

  • Salva l'output in /home/user/customers.txt

  • Utilizza il formato dei caratteri (-c)

  • Usa pipe (|) come delimitatore di campo () -t "|"

  • Utilizza newline come delimitatore di riga () -r "\n"

Importazione di dati in RDS per SQL Server

È possibile utilizzare BCP per importare dati da file sul sistema Linux nell'istanza DB di RDS per SQL Server. Ciò è utile per la migrazione dei dati, il caricamento dei dati di test o gli aggiornamenti regolari dei dati.

Sintassi di importazione di base

La sintassi di base per importare dati tramite BCP è:

bcp database.schema.table in input_file -S server_name -U username -P password [options]

Dove:

  • database.schema.table- Il nome completo della tabella di destinazione

  • input_file- Il percorso e il nome del file di input

  • server_name- L'endpoint RDS per SQL Server

  • username- Il nome utente del database

  • password- La tua password del database

Esempio di importazione

L'esempio seguente importa i dati da un file in una tabella denominatacustomers:

bcp sales.dbo.customers in /home/user/customers.txt \ -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \ -U admin \ -P mypassword \ -c \ -t "|" \ -r "\n" \ -b 1000

Questo comando:

  • Importa i dati nella customers tabella

  • Legge i dati da /home/user/customers.txt

  • Utilizza il formato dei caratteri (-c)

  • Usa pipe (|) come delimitatore di campo () -t "|"

  • Utilizza newline come delimitatore di riga () -r "\n"

  • Elabora i dati in batch di 1000 righe () -b 1000

Opzioni BCP comuni

BCP offre numerose opzioni per controllare la formattazione e il comportamento di trasferimento dei dati. La tabella seguente descrive le opzioni più utilizzate:

Opzione Descrizione
-c Utilizza il tipo di dati dei caratteri per tutte le colonne
-n Utilizza tipi di dati nativi del database
-t Specifica il delimitatore di campo (l'impostazione predefinita è tab)
-r Specifica il delimitatore di riga (il valore predefinito è newline)
-b Specifica la dimensione del batch per le operazioni in blocco
-F Speciifica la prima riga da esportare o importare
-L Speciifica l'ultima riga da esportare o importare
-e Speciifica un file di errore per acquisire le righe rifiutate
-f Speciifica un file di formato per la formattazione dei dati
-q Utilizza identificatori tra virgolette per i nomi degli oggetti

Best practice e considerazioni

Quando utilizzi BCP con RDS per SQL Server di Linux, prendi in considerazione le seguenti best practice:

  • Usa l'elaborazione in batch: per set di dati di grandi dimensioni, utilizza l'-bopzione per elaborare i dati in batch. Ciò migliora le prestazioni e consente un migliore recupero degli errori.

  • Gestisci gli errori in modo corretto: utilizza l'-eopzione per acquisire le informazioni sugli errori e le righe rifiutate in un file separato per l'analisi.

  • Scegli i formati di dati appropriati: utilizza il formato dei caratteri (-c) per la compatibilità multipiattaforma o il formato nativo (-n) per prestazioni migliori quando sia l'origine che la destinazione sono SQL Server.

  • Proteggi le tue credenziali: evita di inserire le password direttamente nelle righe di comando. Prendi in considerazione l'utilizzo di variabili di ambiente o file di configurazione con le autorizzazioni appropriate.

  • Esegui test con set di dati di piccole dimensioni: prima di elaborare grandi quantità di dati, testa i comandi BCP con set di dati più piccoli per verificare la formattazione e la connettività.

  • Monitora la connettività di rete: garantisci connessioni di rete stabili, in particolare per trasferimenti di dati di grandi dimensioni. Prendi in considerazione l'utilizzo di strumenti come screen o tmux per operazioni di lunga durata.

  • Convalida l'integrità dei dati: dopo il trasferimento dei dati, verifica il conteggio delle righe e campiona i dati per garantire il corretto completamento dell'operazione.

Risoluzione dei problemi più comuni

La tabella seguente descrive i problemi più comuni che si possono verificare quando si utilizza BCP di Linux e le relative soluzioni:

Problema Soluzione
Timeout di connessione o errori di rete Verifica l'endpoint Amazon RDS, le impostazioni del gruppo di sicurezza e la connettività di rete. Assicurati che la porta SQL Server (in genere 1433) sia accessibile dal tuo sistema Linux.
Authentication failures (Errori di autenticazione) Verifica il nome utente e la password. Assicurati che l'utente del database disponga delle autorizzazioni appropriate per le operazioni che stai eseguendo.
Errori di formato dei dati Controlla i delimitatori dei campi e delle righe. Assicurati che il formato dei dati corrisponda a quello previsto da BCP. Usa file di formato per strutture di dati complesse.
Errori di autorizzazione negata Assicurati che l'utente del database disponga delle INSERT autorizzazioni per le importazioni o le SELECT autorizzazioni per le esportazioni nelle tabelle di destinazione.
Problemi di gestione di file di grandi dimensioni Usa l'elaborazione in batch con l'-bopzione. Prendi in considerazione la possibilità di suddividere i file di grandi dimensioni in blocchi più piccoli per migliorare le prestazioni e il ripristino degli errori.
Problemi di codifica dei caratteri Assicurati che i tuoi file di dati utilizzino una codifica dei caratteri compatibile. Utilizzate l'-copzione per il formato dei caratteri o specificate le tabelle codici appropriate.