

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
<a name="SQLServer.Procedural.Importing.BCP.Linux"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Prerequisites"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Installing"></a>

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:
+ [Install sqlcmd and bcp the SQL Server command-line tools on Linux](https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools)
+ [bcp utility](https://docs.microsoft.com/en-us/sql/tools/bcp-utility): informazioni di riferimento complete per l’utilità BCP

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Basic"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Exporting.Example"></a>

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 (\$1) 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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Basic"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Importing.Example"></a>

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 (\$1) 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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Options"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.BestPractices"></a>

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
<a name="SQLServer.Procedural.Importing.BCP.Linux.Troubleshooting"></a>

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. | 