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 database RDS per SQL Server e i file di dati. Puoi utilizzare BCP da ambienti Linux per eseguire operazioni sui dati in blocco e usufruire così di utili funzionalità per la migrazione dei dati, i processi ETL e i trasferimenti periodici di dati.

BCP supporta sia l’importazione di dati da file in tabelle SQL Server sia l’esportazione di dati da tabelle SQL Server in file. Questa utilità è particolarmente efficace per il trasferimento di dati strutturati in vari formati, inclusi i file di testo delimitati.

Prerequisiti

Prima di utilizzare BCP con l’istanza database RDS per SQL Server da un ambiente Linux, assicurati di disporre di quanto segue:

  • Un ambiente Linux con connettività di rete all’istanza database RDS per SQL Server

  • Strumenti a riga di comando di Microsoft SQL Server installati nel sistema Linux, tra cui:

    • sqlcmd: strumento per query a riga di comando di SQL Server

    • bcp: utilità Bulk Copy Program

  • Credenziali valide per l’istanza database RDS per SQL Server

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

  • Autorizzazioni di database appropriate per le operazioni da eseguire

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

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

Dopo l’installazione, assicurati che gli strumenti siano disponibili nella variabile PATH eseguendo quanto segue:

bcp -v sqlcmd -?

Esportazione di dati da Amazon RDS per SQL Server

Puoi utilizzare BCP per esportare dati dall’istanza database RDS per SQL Server in file sul sistema Linux. Questa funzionalità è utile per creare backup, eseguire l’analisi dei dati o preparare i dati per la migrazione.

Sintassi di base per l’esportazione

Di seguito è riportata 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 di RDS per SQL Server

  • username: il nome utente del database

  • password: la password del database

Esempio di esportazione

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

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 esegue le seguenti operazioni:

  • Esporta i dati dalla tabella customers.

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

  • Utilizza il formato carattere (-c).

  • Utilizza la barra verticale (|) come delimitatore di campo (-t "|").

  • Utilizza il carattere di nuova riga come delimitatore di riga (-r "\n").

Importazione di dati in RDS per SQL Server

Puoi utilizzare BCP per importare dati da file sul sistema Linux nell’istanza database RDS per SQL Server. Questa funzionalità è utile per la migrazione dei dati, il caricamento dei dati di test o gli aggiornamenti periodici dei dati.

Sintassi di base per l’importazione

Di seguito è riportata la sintassi di base per l’importazione di 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 di RDS per SQL Server

  • username: il nome utente del database

  • password: la password del database

Esempio di importazione

L’esempio seguente importa i dati da un file in una tabella denominata customers:

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 esegue le seguenti operazioni:

  • Importa i dati nella tabella customers.

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

  • Utilizza il formato carattere (-c).

  • Utilizza la barra verticale (|) come delimitatore di campo (-t "|").

  • Utilizza il carattere di nuova riga come delimitatore di riga (-r "\n").

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

Opzioni di BCP comuni

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

Opzione Descrizione
-c Utilizza il tipo di dati carattere per tutte le colonne
-n Utilizza i tipi di dati nativi del database
-t Specifica il delimitatore di campo (il valore predefinito è tab)
-r Specifica il delimitatore di riga (il valore predefinito è newline)
-b Specifica la dimensione del batch per le operazioni in blocco
-F Specifica la prima riga da esportare o importare
-L Specifica l’ultima riga da esportare o importare
-e Specifica un file di errore per acquisire le righe rifiutate
-f Specifica 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 da Linux, tieni presenti le seguenti best practice:

  • Utilizza l’elaborazione in batch: per set di dati di grandi dimensioni, utilizza l’opzione -b per elaborare i dati in batch. In questo modo, puoi ottenere prestazioni più efficienti e un migliore ripristino da errori.

  • Gestisci gli errori in modo corretto: utilizza l’opzione -e 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 carattere (-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 credenziali: evita di inserire le password direttamente nelle righe di comando. Prendi in considerazione l’opportunità di utilizzare variabili di ambiente o file di configurazione con le autorizzazioni appropriate.

  • Esegui un test con set di dati di dimensioni ridotte: prima di elaborare grandi quantità di dati, esegui un test dei comandi di BCP con set di dati di dimensioni più piccole per verificare la formattazione e la connettività.

  • Monitora la connettività di rete: assicurati di disporre di connessioni di rete stabili, soprattutto per trasferimenti di dati di grandi dimensioni. Prendi in considerazione la possibilità di utilizzare strumenti quali screen o tmux per le operazioni di lunga durata.

  • Convalida l’integrità dei dati: dopo il trasferimento dei dati, verifica il numero di righe e i dati campione per assicurarti che l’operazione sia stata completata correttamente.

Risoluzione dei problemi comuni

Nella seguente tabella sono descritti i problemi comuni che potresti riscontrare durante l’utilizzo di BCP da Linux e le relative soluzioni:

Problema Soluzione
Timeout di connessione o errori di rete Verifica l’endpoint di Amazon RDS, le impostazioni del gruppo di sicurezza e la connettività di rete. Assicurati che la porta di SQL Server (in genere, la 1433) sia accessibile dal sistema Linux.
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 di campo e di riga. Assicurati che il formato dei dati corrisponda a quello previsto da BCP. Utilizza file di formato per le strutture di dati complesse.
Errori di autorizzazione negata Assicurati che l’utente del database disponga delle autorizzazioni INSERT per le importazioni o delle autorizzazioni SELECT per le esportazioni nelle tabelle di destinazione.
Problemi di gestione dei file di grandi dimensioni Utilizza l’elaborazione in batch con l’opzione -b. Prendi in considerazione l’opportunità di suddividere i file di grandi dimensioni in blocchi più piccoli per migliorare le prestazioni e il ripristino da errori.
Problemi di codifica dei caratteri Assicurati che i file di dati utilizzino una codifica dei caratteri compatibile. Utilizza l’opzione -c per il formato carattere o specifica le tabelle codici appropriate.