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 -Uusername
-Ppassword
[options]
Dove:
database.schema.table
- Il nome completo della tabellaoutput_file
- Il percorso e il nome del file di outputserver_name
- L'endpoint RDS per SQL Serverusername
- Il nome utente del databasepassword
- 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
\ -Pmypassword
\ -c \ -t "|" \ -r "\n"
Questo comando:
Esporta i dati dalla
customers
tabellaSalva 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 -Sserver_name
-Uusername
-Ppassword
[options]
Dove:
database.schema.table
- Il nome completo della tabella di destinazioneinput_file
- Il percorso e il nome del file di inputserver_name
- L'endpoint RDS per SQL Serverusername
- Il nome utente del databasepassword
- 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
\ -Pmypassword
\ -c \ -t "|" \ -r "\n" \ -b 1000
Questo comando:
Importa i dati nella
customers
tabellaLegge 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'
-b
opzione 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'
-e
opzione 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
otmux
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'-b opzione. 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'-c opzione per il formato dei caratteri o specificate le tabelle codici appropriate. |