Impostazione dei caratteri di terminazione del campo e della riga (SQL Server)Specify Field and Row Terminators (SQL Server)

Per i campi dati di tipo carattere è facoltativamente possibile contrassegnare la fine di ogni campo di un file di dati con un carattere di terminazione del campo a e la fine di ogni riga con un carattere di terminazione della riga.For character data fields, optional terminating characters allow you to mark the end of each field in a data file with a field terminator and the end of each row with a row terminator. I caratteri di terminazione costituiscono un mezzo per indicare ai programmi che leggono il file di dati dove termina un campo o una riga e dove inizia un altro campo o un'altra riga.Terminating characters are one way to indicate to programs that read the data file where one field or row ends and another field or row begins.

Importante

Per il formato nativo o nativo Unicode, utilizzare i prefissi di lunghezza anziché i caratteri di terminazione del campo.When you use native or Unicode native format, use length prefixes rather than field terminators. Possono verificarsi conflitti tra i dati in formato nativo e i caratteri di terminazione, perché un file di dati in formato nativo viene archiviato nel formato di dati binario interno di MicrosoftMicrosoft SQL ServerSQL Server .Native format data can conflict with terminators because a native-format data file is stored in the MicrosoftMicrosoft SQL ServerSQL Server internal binary data format.

Caratteri di terminazione supportatiCharacters Supported As Terminators

Il comando bcp , l'istruzione BULK INSERT e il provider bulk per set di righe OPENROWSET supportano una vasta gamma di caratteri di terminazione del campo o della riga e cercano sempre la prima istanza di ogni carattere di terminazione.The bcp command, BULK INSERT statement, and the OPENROWSET bulk rowset provider support a variety of characters as field or row terminators and always look for the first instance of each terminator. Nella tabella seguente sono inclusi i caratteri di terminazione supportati.The following table lists the supported characters for terminators.

Carattere di terminazioneTerminating character Indicato daIndicated by
SchedaTab \t\t

Questo è il carattere di terminazione del campo predefinito.This is the default field terminator.
Carattere di nuova rigaNewline character \n

Questo è il carattere di terminazione della riga predefinito.This is the default row terminator.
Ritorno a capo/avanzamento rigaCarriage return/line feed \r\r
Barra rovesciataBackslash \\
Carattere di terminazione Null (non visibile)Null terminator (nonvisible terminator) \0\0
Tutti i caratteri stampabili (i caratteri di controllo non sono stampabili, ad eccezione dei caratteri Null, di tabulazione, di nuova riga e di ritorno a capo)Any printable character (control characters are not printable, except null, tab, newline, and carriage return) (, A, t, l e così via)(, A, t, l, and so on)
Stringa costituita da un massimo di 10 caratteri stampabili, inclusi alcuni o tutti i caratteri di terminazione descritti sopraString of up to 10 printable characters, including some or all of the terminators listed earlier (\t**, end, !!!!!!!!!!, \t—\n e così via)(\t**, end, !!!!!!!!!!, \t—\n, and so on)

Per generare un carattere di controllo, è possibile utilizzare solo i caratteri t, n, r, 0 e '\0' in associazione al carattere di escape barra rovesciata.Only the t, n, r, 0 and '\0' characters work with the backslash escape character to produce a control character.

Anche se il carattere di controllo Null (\0) non è visibile quando viene stampato, è un carattere distinto del file di dati.Even though the null control character (\0) is not visible when printed, it is a distinct character in the data file. Pertanto, l'utilizzo di un carattere di controllo Null come carattere di terminazione è diverso dall'assenza di qualsiasi carattere di terminazione del campo o della riga.This means that using the null control character as a field or row terminator is different than having no field or row terminator at all.

Importante

Se i dati contengono un carattere di terminazione, questo viene interpretato come tale e non come un'informazione, mentre i dati che seguono tale carattere vengono interpretati come parte del campo o del record successivo.If a terminator character occurs within the data, it is interpreted as a terminator, not as data, and the data after that character is interpreted as belonging to the next field or record. Di conseguenza, è necessario scegliere con attenzione i caratteri di terminazione per evitare che vengano visualizzati nei dati.Therefore, choose your terminators carefully to make sure that they never appear in your data. Un carattere di terminazione del campo di surrogato basso, ad esempio, non costituisce una buona scelta per un carattere di terminazione del campo se i dati contengono tale surrogato basso.For example, a low surrogate field terminator would not be a good choice for a field terminator if the data contains that low surrogate.

Utilizzo di caratteri di terminazione della rigaUsing Row Terminators

Il carattere di terminazione della riga può essere identico al carattere di terminazione dell'ultimo campo.The row terminator can be the same character as the terminator for the last field. In genere, tuttavia, è consigliabile utilizzare un carattere di terminazione della riga distinto.Generally, however, a distinct row terminator is useful. Per generare un output in formato tabulare, ad esempio, è possibile terminare l'ultimo campo di ogni riga con il carattere di nuova riga (\n) e tutti gli altri campi con il carattere di tabulazione (\t).For example, to produce tabular output, terminate the last field in each row with the newline character (\n) and all other fields with the tab character (\t). Per posizionare ogni record di dati nella riga corrispondente del file di dati, specificare la combinazione \r\n come carattere di terminazione della riga.To place each data record on its own line in the data file, specify the combination \r\n as the row terminator.

Nota

Se si usa l'utilità bcp in modalità interattiva e si specifica il carattere di nuova riga \n come carattere di terminazione della riga, il comando bcp aggiunge automaticamente il carattere di ritorno a capo \r come prefisso, generando il carattere di terminazione della riga \r\n.When you use bcp interactively and specify \n (newline) as the row terminator, bcp automatically prefixes it with a \r (carriage return) character, which results in a row terminator of \r\n.

Impostazione dei caratteri di terminazione per l'esportazione bulkSpecifying Terminators for Bulk Export

Se si esegue l'esportazione bulk di dati char o nchar e si vuole usare un carattere di terminazione non predefinito, è necessario specificare tale carattere nel comando bcp .When you bulk export char or nchar data, and want to use a non-default terminator, you must specify the terminator to the bcp command. È possibile specificare i caratteri di terminazione in uno dei modi seguenti:You can specify terminators in any of the following ways:

  • Con un file di formato che specifica il carattere di terminazione per ogni singolo campo.With a format file that specifies the terminator on a field-by-field basis.

    Nota

    Per informazioni su come usare i file di formato, vedere File di formato per l'importazione o l'esportazione di dati (SQL Server).For information about how to use format files, see Format Files for Importing or Exporting Data (SQL Server).

  • Senza un file di formato, mediante le alternative seguenti:Without a format file, the following alternatives exist:

    • Uso dell'opzione -t per specificare il carattere di terminazione del campo per tutti i campi, ad eccezione dell'ultimo campo della riga, e dell'opzione -r per specificare un carattere di terminazione della riga.Using the -t switch to specify the field terminator for all the fields except the last field in the row and using the -r switch to specify a row terminator.

    • Uso di un'opzione per il formato carattere (-c o -w) senza l'opzione -t , che imposta il carattere di terminazione del campo sul carattere di tabulazione, \t.Using a character-format switch (-c or -w) without the -t switch, which sets the field terminator to the tab character, \t. Questa impostazione è equivalente all'uso di -t\t.This is the same as specifying -t\t.

      Nota

      Se si specifica l'opzione -n per i dati nativi o l'opzione -N per i dati nativi Unicode, i caratteri di terminazione non vengono inseriti.If you specify the -n (native data) or -N (Unicode native) switch, terminators are not inserted.

    • Se un comando bcp interattivo include l'opzione in o out senza l'opzione per il file di formato (-f) o per un formato dei dati (-n, -c, -wo -N) e si è scelto di non specificare la lunghezza del prefisso e del campo, il comando richiede di specificare il carattere di terminazione di ogni campo. L'impostazione predefinita none non prevede alcun carattere di terminazione:If an interactive bcp command contains the in or out option without either the format file switch (-f) or a data-format switch (-n, -c, -w, or -N), and you have chosen not to specify prefix length and field length, the command prompts for the field terminator of each field, with a default of none:

      Enter field terminator [none]:

      In genere, l'impostazione predefinita rappresenta una scelta appropriata.Generally, the default is a suitable choice. Per i campi che includono dati char o nchar, tuttavia, vedere la sottosezione seguente "Linee guida per l'utilizzo dei caratteri di terminazione".However, for char or nchar data fields, see the following subsection, "Guidelines for Using Terminators." Per un esempio contestualizzato di tale richiesta, vedere Impostazione dei formati di dati per la compatibilità mediante (SQL Server).For an example that shows this prompt in context, see Specify Data Formats for Compatibility when Using bcp (SQL Server).

      Nota

      Dopo l'impostazione interattiva di tutti i campi in un comando bcp, viene richiesto di salvare le risposte relative a ogni campo in un file di formato non XML.After you interactively specify all of the fields in a bcp command, the command prompts you save your responses for each field in a non-XML format file. Per altre informazioni sui file di formato non XML, vedere File in formato non XML (SQL Server).For more information about non-XML format files, see Non-XML Format Files (SQL Server).

Linee guida per l'utilizzo dei caratteri di terminazioneGuidelines for Using Terminators

In alcuni casi, un carattere di terminazione può essere utile per un campo dati char o nchar .In some situations, a terminator is useful for a char or nchar data field. Esempio:For example:

  • Per una colonna di dati che contiene un valore null in un file di dati da importare in un programma che non riconosce le informazioni sulla lunghezza del prefisso.For a data column that contains a null value in a data file that will be imported into a program that does not understand the prefix length information.

    Qualsiasi colonna di dati che contiene un valore null è considerata a lunghezza variabile.Any data column that contains a null value is considered variable length. In assenza di lunghezze dei prefissi, un carattere di terminazione è necessario per identificare la fine di un campo null, in modo da garantire la corretta interpretazione dei dati.In the absence of prefix lengths, a terminator is necessary to identify the end of a null field, making sure that the data is correctly interpreted.

  • Per una colonna a lunghezza fissa lunga il cui spazio è utilizzato solo parzialmente da molte righe.For a long fixed-length column whose space is only partially used by many rows.

    In questa situazione, la definizione di un carattere di terminazione può ridurre lo spazio di archiviazione, facendo sì che il campo venga considerato un campo a lunghezza variabile.In this situation, specifying a terminator can minimize storage space allowing the field to be treated as a variable-length field.

EsempiExamples

In questo esempio viene eseguita l'esportazione bulk dei dati dalla tabella AdventureWorks.HumanResources.Department al file di dati Department-c-t.txt usando il formato carattere con la virgola come carattere di terminazione del campo e il carattere di nuova riga (\n) come terminazione di riga.This example bulk exports the data from the AdventureWorks.HumanResources.Department table to the Department-c-t.txt data file using character format, with a comma as a field terminator and the newline character (\n) as the row terminator.

Per il comando bcp sono disponibili le opzioni seguenti.The bcp command contains the following switches.

OpzioneSwitch DescrizioneDescription
-c-c Specifica che i campi dati devono essere caricati come dati di tipo carattere.Specifies that the data fields be loaded as character data.
-t ,-t , Specifica la virgola (,) come carattere di terminazione del campo.Specifies a comma (,) as the field terminator.
-r \n-r \n Specifica il carattere di nuova riga come carattere di terminazione della riga.Specifies the row terminator as a newline character. Questo è il carattere di terminazione della riga predefinito e, pertanto, la relativa impostazione è facoltativa.This is the default row terminator, so specifying it is optional.
-T-T Specifica che l'utilità bcp si connette a SQL ServerSQL Server con una connessione trusted che usa la sicurezza integrata.Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. Se non si specifica -T , è necessario specificare -U e -P per eseguire correttamente l'accesso.If -T is not specified, you need to specify -U and -P to successfully log in.

Per altre informazioni, vedere bcp Utility.For more information, see bcp Utility.

Al prompt dei comandi di MicrosoftMicrosoft Windows digitare:At the MicrosoftMicrosoft Windows command prompt enter:

bcp AdventureWorks.HumanResources.Department out C:\myDepartment-c-t.txt -c -t, -r \n -T  

In questo modo viene creato il file di dati Department-c-t.txtcontenente 16 record, ognuno con quattro campi.This creates Department-c-t.txt, which contains 16 records with four fields each. I campi sono separati da una virgola.The fields are separated by a comma.

Impostazione dei caratteri di terminazione per l'importazione bulkSpecifying Terminators for Bulk Import

Quando si esegue l'importazione bulk di dati char o nchar , il relativo comando deve riconoscere i caratteri di terminazione usati nel file di dati.When you bulk import char or nchar data, the bulk-import command must recognize the terminators that are used in the data file. L'impostazione dei caratteri di terminazione varia in base al comando per l'importazione bulk, come illustrato di seguito:How terminators can be specified depends on the bulk-import command, as follows:

  • bcpbcp

    Per impostare i caratteri di terminazione per un'operazione di importazione, è possibile utilizzare la stessa sintassi utilizzata per un'operazione di esportazione.Specifying terminators for an import operation uses the same syntax as for an export operation. Per ulteriori informazioni, vedere "Impostazione dei caratteri di terminazione per l'esportazione bulk", più indietro in questo argomento.For more information, see "Specifying Terminators for Bulk Export," earlier in this topic.

  • BULK INSERTBULK INSERT

    È possibile specificare i caratteri di terminazione per i singoli campi di un file di formato o per l'intero file di dati utilizzando i qualificatori illustrati nella tabella seguente:Terminators can be specified for individual fields in a format file or for the whole data file by using the qualifiers shown in the following table.

    QualifierQualifier DescrizioneDescription
    FIELDTERMINATOR ='field_terminator'FIELDTERMINATOR ='field_terminator' Specifica il carattere di terminazione del campo da utilizzare per i file di dati di tipo carattere e carattere Unicode.Specifies the field terminator to be used for character and Unicode character data files.

    Il valore predefinito è il carattere di tabulazione (\t).The default is \t (tab character).
    ROWTERMINATOR ='row_terminator'ROWTERMINATOR ='row_terminator' Specifica il carattere di terminazione della riga da utilizzare per i file di dati di tipo carattere e carattere Unicode.Specifies the row terminator to be used for character and Unicode character data files.

    Il valore predefinito è \n (carattere di nuova riga).The default is \n (newline character).

    Per altre informazioni, vedere BULK INSERT (Transact-SQL).For more information, see BULK INSERT (Transact-SQL).

  • INSERT ... SELECT * FROM OPENROWSET(BULK...).INSERT ... SELECT * FROM OPENROWSET(BULK...)

    Per il provider di set di righe con lettura bulk OPENROWSET, è possibile specificare i caratteri di terminazione solo nel file di formato, ad eccezione dei tipi di dati contenenti oggetti di grandi dimensioni.For the OPENROWSET bulk rowset provider, terminators can be specified only in the format file (which is required except for large-object data types). Se un file di dati di tipo carattere utilizza un carattere di terminazione non predefinito, è necessario definire tale carattere nel file di formato.If a character data file uses a non-default terminator, it must be defined in the format file. Per altre informazioni, vedere Creazione di un file di formato (SQL Server&#41 e Utilizzo di un file di formato per l'importazione bulk dei dati (SQL Server).For more information, see Create a Format File (SQL Server) and Use a Format File to Bulk Import Data (SQL Server).

    Per altre informazioni sulla clausola OPENROWSET BULK, vedere OPENROWSET (Transact-SQL).For more information about the OPENROWSET BULK clause, see OPENROWSET (Transact-SQL).

EsempiExamples

Negli esempi di questa sezione viene eseguita l'importazione bulk di dati di tipo carattere dal file dei dati Department-c-t.txt creato nell'esempio precedente nella tabella myDepartment del database di esempio AdventureWorks2012AdventureWorks2012 .The examples in this section bulk import character data form the Department-c-t.txt data file created in the preceding example into the myDepartment table in the AdventureWorks2012AdventureWorks2012 sample database. Prima di eseguire le procedure illustrate negli esempi, è necessario creare la tabella.Before you can run the examples, you must create this table. Per crearla in base allo schema dbo , nell'editor di query di SQL Server Management StudioSQL Server Management Studio eseguire il codice seguente:To create this table under the dbo schema, in SQL Server Management StudioSQL Server Management Studio Query Editor, execute the following code:

USE AdventureWorks;  
GO  
DROP TABLE myDepartment;  
CREATE TABLE myDepartment   
(DepartmentID smallint,  
Name nvarchar(50),  
GroupName nvarchar(50) NULL,  
ModifiedDate datetime not NULL CONSTRAINT DF_AddressType_ModifiedDate DEFAULT (GETDATE())  
);  
GO 

A.A. Utilizzo del comando bcp per l'impostazione interattiva dei caratteri di terminazioneUsing bcp to interactively specify terminators

Nell'esempio seguente viene eseguita l'importazione bulk del file di dati Department-c-t.txt utilizzando un comando bcp .The following example bulk imports the Department-c-t.txt data file using a bcp command. Per questo comando sono disponibili le stesse opzioni del comando di esportazione bulk.This command uses the same command switches as the bulk export command. Per ulteriori informazioni, vedere "Impostazione dei caratteri di terminazione per l'esportazione bulk", più indietro in questo argomento.For more information, see "Specifying Terminators for Bulk Export," earlier in this topic.

Al prompt dei comandi di Windows digitare:At the Windows command prompt enter:

bcp AdventureWorks..myDepartment in C:\myDepartment-c-t.txt -c -t , -r \n -T  

B.B. Utilizzo dell'istruzione BULK INSERT per l'impostazione interattiva dei caratteri di terminazioneUsing BULK INSERT to interactively specify terminators

Nell'esempio seguente viene eseguita l'importazione bulk del file di dati Department-c-t.txt utilizzando un'istruzione BULK INSERT con i qualificatori illustrati nella tabella seguente:The following example bulk imports the Department-c-t.txt data file using a BULK INSERT statement that uses the qualifiers shown in the following table.

OpzioneOption AttributeAttribute
DATAFILETYPE ='char'DATAFILETYPE ='char' Specifica che i campi dati devono essere caricati come dati di tipo carattere.Specifies that the data fields be loaded as character data.
FIELDTERMINATOR =','FIELDTERMINATOR =',' Specifica la virgola (,) come carattere di terminazione del campo.Specifies a comma (,) as the field terminator.
ROWTERMINATOR ='\n'ROWTERMINATOR ='\n' Specifica il carattere di nuova riga come carattere di terminazione della riga.Specifies the row terminator as a newline character.

Nell'editor di query di SQL Server Management StudioSQL Server Management Studio eseguire il codice seguente:In SQL Server Management StudioSQL Server Management Studio Query Editor, execute the following code:

USE AdventureWorks;  
GO  
BULK INSERT myDepartment FROM 'C:\myDepartment-c-t.txt'  
   WITH (  
      DATAFILETYPE = 'char',  
      FIELDTERMINATOR = ',',  
      ROWTERMINATOR = '\n'  
);  
GO  

Vedere ancheSee Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Definizione della lunghezza di campo tramite bcp (SQL Server) Specify Field Length by Using bcp (SQL Server)
Specificare la lunghezza del prefisso nei file di dati tramite bcp (SQL Server) Specify Prefix Length in Data Files by Using bcp (SQL Server)
Specifica del tipo di archiviazione di file tramite bcp (SQL Server)Specify File Storage Type by Using bcp (SQL Server)