Utilizzo del formato carattere per l'importazione o l'esportazione di dati (SQL Server)Use Character Format to Import or Export Data (SQL Server)

È consigliabile adottare il formato carattere per l'esportazione bulk in file di testo utilizzati in altri programmi o per l'importazione bulk da file di testo creati in altri programmi.Character format is recommended when you bulk export data to a text file that is to be used in another program or when you bulk import data from a text file that is generated by another program.

Quando si utilizza il formato carattere, in tutte le colonne viene applicato il formato dati di tipo carattere.Character format uses the character data format for all columns. L'archiviazione in formato carattere risulta utile quando i dati vengono utilizzati in altri programmi, ad esempio in un foglio di calcolo, o quando è necessario copiare in un'istanza di SQL ServerSQL Server i dati di database di altri fornitori, ad esempio Oracle.Storing information in character format is useful when the data is used with another program, such as a spreadsheet, or when the data needs to be copied into an instance of SQL ServerSQL Server from another database vendor such as Oracle.

Nota

Quando si esegue il trasferimento bulk dei dati tra le istanze di MicrosoftMicrosoft SQL ServerSQL Server e il file di dati contiene dati di tipo carattere Unicode ma nessun carattere esteso o DBCS, usare il formato carattere Unicode.When you bulk transfer data between instances of MicrosoftMicrosoft SQL ServerSQL Server and the data file contains Unicode character data but not any extended or DBCS characters, use the Unicode character format. Per altre informazioni, vedere Usare il formato carattere Unicode per importare o esportare dati (SQL Server).For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).

Contenuto dell'argomentoIn this Topic:
Considerazioni sull'utilizzo del formato carattereConsiderations for Using Character Format
Opzioni del comando per il formato carattereCommand Options for Character Format
Condizioni di test di esempioExample Test Conditions
 ● Tabella di esempio ● Sample Table
 ● File di formato non XML di esempio ● Sample Non-XML Format File
EsempiExamples
 ● Uso di bcp e del formato carattere per l'esportazione di dati ● Using bcp and Character Format to Export Data
 ● Uso di bcp e del formato carattere per l'importazione di dati senza un file di formato ● Using bcp and Character Format to Import Data without a Format File
 ● Uso di bcp e del formato carattere per l'importazione di dati con un file di formato non XML ● Using bcp and Character Format to Import Data with a Non-XML Format File
 ● Uso di BULK INSERT e del formato carattere senza un file di formato ● Using BULK INSERT and Character Format without a Format File
 ● Uso di BULK INSERT e del formato carattere con un file di formato non XML ● Using BULK INSERT and Character Format with a Non-XML Format File
 ● Uso di OPENROWSET e del formato carattere con un file di formato non XML ● Using OPENROWSET and Character Format with a Non-XML Format File
Attività correlateRelated Tasks

Considerazioni sull'utilizzo del formato carattereConsiderations for Using Character Format

Quando si utilizza il formato carattere, è necessario tenere presenti i fattori seguenti:When using character format, consider the following:

  • Per impostazione predefinita, quando si esegue l'utilità bcp i campi dei dati di tipo carattere vengono separati da un carattere di tabulazione e alla fine dei record viene inserito un carattere di nuova riga.By default, the bcp utility separates the character-data fields with the tab character and terminates the records with the newline character. Per informazioni su come specificare caratteri di terminazione alternativi, vedere Impostazione dei caratteri di terminazione del campo e della riga (SQL Server).For information about how to specify alternative terminators, see Specify Field and Row Terminators (SQL Server).

  • Per impostazione predefinita, prima dell'esportazione o dell'importazione bulk di dati in modalità carattere, vengono eseguite le conversioni seguenti:By default, before the bulk export or import of character-mode data, the following conversions are performed:

    Direzione dell'operazione bulkDirection of bulk operation ConversioneConversion
    EsportazioneExport I dati vengono convertiti in rappresentazione dei caratteri.Converts data to character representation. Se richiesto in modo esplicito, la conversione viene eseguita in base alla tabella codici specificata per le colonne di tipo carattere.If explicitly requested, the data is converted to the requested code page for character columns. Se non è stata specificata alcuna tabella codici, i dati di tipo carattere vengono convertiti in base alla tabella codici OEM del computer client.If no code page is specified, the character data is converted by using the OEM code page of the client computer.
    ImportaImport I dati di tipo carattere vengono convertiti in rappresentazione nativa, se necessario, e tradotti dalla tabella codici del client alla tabella codici delle colonne di destinazione.Converts character data to native representation, when necessary, and translates the character data from the client's code page to the code page of the target column(s).
  • Per impedire eventuali perdite di caratteri estesi durante la conversione, utilizzare il formato di carattere Unicode o specificare una tabella codici.To prevent loss of extended characters during conversion, either use Unicode character format or specify a code page.

  • I dati sql_variant archiviati in un file di formato carattere risultano privi di metadati.Any sql_variant data that is stored in a character-format file is stored without metadata. Ogni valore viene convertito nel formato char in base alle regole di conversione dei dati implicita.Each data value is converted to char format, according to the rules of implicit data conversion. I dati importati in colonne sql_variant risultano di tipo char.When imported into a sql_variant column, the data is imported as char. I dati importati in colonne con tipo di dati diverso da sql_variant vengono convertiti dal tipo di dati char tramite una conversione implicita.When imported into a column with a data type other than sql_variant, the data is converted from char by using implicit conversion. Per altre informazioni sulla conversione dei dati, vedere Conversione del tipo di dati (Motore di database).For more information about data conversion, see Data Type Conversion (Database Engine).

  • L utilità bcp esporta i valori money in file di dati in formato carattere con quattro cifre dopo il separatore dei decimali e senza simboli di raggruppamento delle cifre, quali i separatori delle migliaia.The bcp utility exports money values as character-format data files with four digits after the decimal point and without any digit-grouping symbols such as comma separators. Ad esempio, una colonna money contenente il valore 1,234,567.123456 viene copiata in un file di dati come stringa di caratteri 1234567.1235 tramite l'esportazione bulk.For example, a money column that contains the value 1,234,567.123456 is bulk exported to a data file as the character string 1234567.1235.

Opzioni del comando per il formato carattereCommand Options for Character Format

È possibile importare dati in formato carattere in una tabella con bcp, BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...).You can import character format data into a table using bcp, BULK INSERT or INSERT ... SELECT * FROM OPENROWSET(BULK...). Per un comando bcp o un'istruzione BULK INSERT, è possibile specificare il formato dati nell'istruzione.For a bcp command or BULK INSERT statement, you can specify the data format in the statement. Per un'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...) è necessario specificare il formato dati in un file di formato.For an INSERT ... SELECT * FROM OPENROWSET(BULK...) statement, you must specify the data format in a format file.

Il formato carattere è supportato dalle opzioni di comando seguenti:Character format is supported by the following command options:

ComandoCommand OpzioneOption DescrizioneDescription
bcpbcp -c-c Determina l'uso dei dati di tipo carattere da parte dell'utilità bcp.Causes the bcp utility to use character data.
BULK INSERTBULK INSERT DATAFILETYPE ='char'DATAFILETYPE ='char' Durante l'importazione bulk dei dati viene applicato il formato carattere.Use character format when bulk importing data.
OPENROWSETOPENROWSET N/DN/A Deve usare un file di formatoMust use a format file

*Per caricare dati di tipo carattere (-c) in un formato compatibile con le versioni precedenti dei client SQL ServerSQL Server , usare l'opzione **-V* .*To load character (-c) data to a format compatible with earlier versions of SQL ServerSQL Server clients, use the -V switch. Per altre informazioni, vedere Importare dati in formato nativo e carattere da versioni precedenti di SQL Server.For more information, see Import Native and Character Format Data from Earlier Versions of SQL Server.

Nota

In alternativa, è possibile definire la formattazione di ogni singolo campo in un file di formato.Alternatively, you can specify formatting on a per-field basis in a format file. Per altre informazioni, vedere File di formato per l'importazione o l'esportazione di dati (SQL Server).For more information, see Format Files for Importing or Exporting Data (SQL Server).

Condizioni di test di esempioExample Test Conditions

Gli esempi riportati in questo argomento sono basati sulla tabella e sul file di formato definiti di seguito.The examples in this topic are based on the table, and format file defined below.

Tabella di esempioSample Table

Lo script seguente crea un database di test, una tabella denominata myChar e popola la tabella con alcuni valori iniziali.The script below creates a test database, a table named myChar and populates the table with some initial values. Eseguire l'istruzione Transact-SQL seguente in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

CREATE DATABASE TestDatabase;
GO

USE TestDatabase;
CREATE TABLE dbo.myChar ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myChar
VALUES 
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);

-- Review Data
SELECT * FROM TestDatabase.dbo.myChar;

File di formato non XML di esempioSample Non-XML Format File

SQL Server supporta due tipi di file di formato, ovvero non XML e XML.SQL Server support two types of format file: non-XML format and XML format. Il formato non XML è il formato originale supportato dalle versioni precedenti di SQL Server.The non-XML format is the original format that is supported by earlier versions of SQL Server. Per informazioni dettagliate, vedere File in formato non XML (SQL Server) .Please review Non-XML Format Files (SQL Server) for detailed information. Il comando seguente userà l' utility bcp per generare un formato di file non XML, myChar.fmt, sulla base dello schema di myChar.The following command will use the bcp utility to generate a non-xml format file, myChar.fmt, based on the schema of myChar. Per usare un comando bcp per creare un file di formato, specificare l'argomento format e usare nul anziché un percorso del file di dati.To use a bcp command to create a format file, specify the format argument and use nul instead of a data-file path. L'opzione format richiede anche l'opzione -f .The format option also requires the -f option. Inoltre, in questo esempio il qualificatore c viene usato per specificare dati di tipo carattere e T viene usato per specificare una connessione trusted che usa la sicurezza integrata.In addition, for this example, the qualifier c is used to specify character data, and T is used to specify a trusted connection using integrated security. Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c 

REM Review file
Notepad D:\BCP\myChar.fmt
Importante

Verificare che il file di formato non XML termini con un ritorno a capo/avanzamento riga.Ensure your non-XML format file ends with a carriage return\line feed. In caso contrario, è possibile che venga visualizzato il messaggio di errore seguente:Otherwise you will likely receive the following error message:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file

EsempiExamples

Gli esempi seguenti usano il database e i file di formato creati in precedenza.The examples below use the database, and format files created above.

Uso di bcp e del formato carattere per l'esportazione di datiUsing bcp and Character Format to Export Data

Opzione-c e comando OUT .-c switch and OUT command. Nota: il file di dati creato in questo esempio verrà usato in tutti gli esempi successivi.Note: the data file created in this example will be used in all subsequent examples. Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c

REM Review results
NOTEPAD D:\BCP\myChar.bcp

Uso di bcp e del formato carattere per l'importazione di dati senza un file di formatoUsing bcp and Character Format to Import Data without a Format File

Opzione-c e comando IN .-c switch and IN command. Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

Uso di bcp e del formato carattere per l'importazione di dati con un file di formato non XMLUsing bcp and Character Format to Import Data with a Non-XML Format File

Opzioni-c e -f switches e IN comme.-c and -f switches and IN command. Al prompt dei comandi immettere il comando seguente:At a command prompt, enter the following command:

REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"

REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T

REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"

Uso di BULK INSERT e del formato carattere senza un file di formatoUsing BULK INSERT and Character Format without a Format File

ArgomentoDATAFILETYPE .DATAFILETYPE argument. Eseguire l'istruzione Transact-SQL seguente in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
    FROM 'D:\BCP\myChar.bcp'
    WITH (
        DATAFILETYPE = 'Char'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Uso di BULK INSERT e del formato carattere con un file di formato non XMLUsing BULK INSERT and Character Format with a Non-XML Format File

ArgomentoFORMATFILE .FORMATFILE argument. Eseguire l'istruzione Transact-SQL seguente in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
   FROM 'D:\BCP\myChar.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myChar.fmt'
        );

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Uso di OPENROWSET e del formato carattere con un file di formato non XMLUsing OPENROWSET and Character Format with a Non-XML Format File

ArgomentoFORMATFILE .FORMATFILE argument. Eseguire l'istruzione Transact-SQL seguente in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):Execute the following Transact-SQL in Microsoft SQL Server Management StudioSQL Server Management Studio (SSMS):

TRUNCATE TABLE TestDatabase.dbo.myChar;  -- for testing
INSERT INTO TestDatabase.dbo.myChar
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myChar.bcp', 
        FORMATFILE = 'D:\BCP\myChar.fmt'  
        ) AS t1;

-- review results
SELECT * FROM TestDatabase.dbo.myChar;

Attività correlateRelated Tasks

Per utilizzare formati di dati per l'importazione o l'esportazione bulkTo use data formats for bulk import or bulk export

Vedere ancheSee Also

bcp Utility bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Tipi di dati (Transact-SQL) Data Types (Transact-SQL)
Importare dati in formato nativo e carattere da versioni precedenti di SQL Server Import Native and Character Format Data from Earlier Versions of SQL Server