Utilizzo del formato nativo per importare o esportare dati (SQL Server)Use Native Format to Import or Export Data (SQL Server)

L'utilizzo del formato nativo è consigliabile per il trasferimento bulk dei dati tra più istanze di SQL ServerSQL Server mediante un file di dati in cui non sono inclusi caratteri estesi o DBCS (Double Byte Character Set).Native format is recommended when you bulk transfer data between multiple instances of SQL ServerSQL Server using a data file that does not contain any extended/double-byte character set (DBCS) characters.

Nota

Per il trasferimento bulk di dati tra più istanze di SQL ServerSQL Server mediante un file di dati contenente caratteri estesi o DBCS, è consigliabile utilizzare il formato nativo Unicode.To bulk transfer data between multiple instances of SQL ServerSQL Server by using a data file that contains extended or DBCS characters, you should use the Unicode native format. Per altre informazioni, vedere Usare il formato Unicode nativo per importare o esportare dati (SQL Server).For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

Il formato nativo mantiene i tipi di dati nativi di un databaseNative format maintains the native data types of a database. e viene utilizzato per il trasferimento dei dati ad alta velocità tra le tabelle SQL ServerSQL Server .Native format is intended for high-speed data transfer of data between SQL ServerSQL Server tables. Se si utilizza un file di formato, non è necessario che le tabelle di origine e di destinazione siano identiche.If you use a format file, the source and target tables do not need to be identical. Il trasferimento dei dati è costituito da due passaggi:The data transfer involves two steps:

  1. Esportazione bulk dei dati da una tabella di origine in un file di datiBulk exporting the data from a source table into a data file

  2. Importazione bulk dei dati dal file di dati nella tabella di destinazioneBulk importing the data from the data file into the target table

L'utilizzo del formato nativo tra tabelle identiche consente di evitare la conversione di tipi di dati nel/dal formato carattere, risparmiando tempo e spazio.The use of native format between identical tables avoids unnecessary conversion of data types to and from character format, saving time and space. Per raggiungere la velocità di trasferimento ottimale, tuttavia, vengono eseguiti solo alcuni controlli relativi alla formattazione dei dati.To achieve the optimum transfer rate, however, few checks are performed regarding data formatting. Per evitare problemi relativi ai dati caricati, vedere l'elenco di restrizioni seguente.To prevent problems with the loaded data, see the following restrictions list.

Contenuto dell'argomentoIn this Topic:
RestrizioniRestrictions
Gestione dei dati in formato nativo mediante l'utilità bcpHow bcp Handles Data in Native Format
Opzioni di comando per il formato nativoCommand Options for Native 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 nativo per l'esportazione di dati ● Using bcp and Native Format to Export Data
 ● Uso di bcp e del formato nativo per l'importazione di dati senza un file di formato ● Using bcp and Native Format to Import Data without a Format File
 ● Uso di bcp e del formato nativo per l'importazione di dati con un file di formato non XML ● Using bcp and Native Format to Import Data with a Non-XML Format File
 ● Uso di BULK INSERT e del formato nativo senza un file di formato ● Using BULK INSERT and Native Format without a Format File
 ● Uso di BULK INSERT e del formato nativo con un file di formato non XML ● Using BULK INSERT and Native Format with a Non-XML Format File
 ● Uso di OPENROWSET e del formato nativo con un file di formato non XML ● Using OPENROWSET and Native Format with a Non-XML Format File
Attività correlateRelated Tasks

RestrizioniRestrictions

Per importare correttamente i dati in formato nativo, verificare quanto segue:To import data in native format successfully, ensure that:

  • Il file di dati deve essere in formato nativo.The data file is in native format.

  • È necessario che la tabella di destinazione sia compatibile con il file di dati (deve includere il numero di colonne, il tipo di dati e la lunghezza corretti, lo stato NULL e così via). In alternativa, è necessario utilizzare un file di formato per eseguire il mapping tra ogni campo e le colonne corrispondenti.Either the target table must be compatible with the data file (having the correct number of columns, data type, length, NULL status, and so forth), or you must use a format file to map each field to its corresponding columns.

    Nota

    Se si importano i dati da un file non corrispondente alla tabella di destinazione, è possibile che l'operazione di importazione riesca ma i dati della tabella di destinazione potrebbero non essere corretti.If you import data from a file that is mismatched with the target table, the import operation might succeed but the data values inserted into the target table are likely to be incorrect. Ciò è dovuto al fatto che i dati del file vengono interpretati utilizzando il formato della tabella di destinazione.This is because the data from the file is interpreted by using the format of the target table. Pertanto, la mancata corrispondenza causa l'inserimento di valori non correttiTherefore, any mismatch results in the insertion of incorrect values. ma in nessun caso può determinare inconsistenze di tipo logico o fisico nel database.However, under no circumstances can such a mismatch cause logical or physical inconsistencies in the database.

    Per altre informazioni sull'uso dei file di formato, vedere File di formato per l'importazione o l'esportazione di dati (SQL Server).For information on using format files, see Format Files for Importing or Exporting Data (SQL Server).

    Un'importazione corretta non danneggerà la tabella di destinazione.A successful import will not corrupt the target table.

Gestione dei dati in formato nativo mediante l'utilità bcpHow bcp Handles Data in Native Format

In questa sezione sono contenute considerazioni particolari sull'importazione e sull'esportazione dei dati in formato nativo mediante l'utilità bcp .This section discusses special considerations for how the bcp utility exports and imports data in native format.

  • Dati non di tipo carattereNoncharacter data

    L' utilità bcp usa il formato dati binario interno di SQL ServerSQL Server per trasferire dati non di tipo carattere da una tabella in un file di dati.The bcp utility uses the SQL ServerSQL Server internal binary data format to write noncharacter data from a table to a data file.

  • Datichar o varchar char or varchar data

    All'inizio di ogni campo char o varchar , l'utilità bcp aggiunge la lunghezza del prefisso.At the beginning of each char or varchar field, bcp adds the prefix length.

    Importante

    Per impostazione predefinita, quando si usa la modalità nativa, l'utilità bcp converte i caratteri di SQL ServerSQL Server in caratteri OEM prima di copiarli in un file di dati.When native mode is used, by default, the bcp utility converts characters from SQL ServerSQL Server to OEM characters before it copies them to a data file. L' utilità bcp converte i caratteri di un file di dati in caratteri ANSI prima dell'importazione bulk in una tabella SQL ServerSQL Server .The bcp utility converts characters from a data file to ANSI characters before it bulk imports them into a SQL ServerSQL Server table. Durante queste conversioni può verificarsi la perdita dei dati con caratteri estesi.During these conversions, extended character data can be lost. Per i caratteri estesi, è necessario utilizzare il formato nativo Unicode o specificare una tabella codici.For extended characters, either use Unicode native format or specify a code page.

  • Datisql_variant sql_variant data

    Se i dati sql_variant vengono archiviati come SQLVARIANT in un file di dati in formato nativo, verranno mantenute tutte le relative caratteristiche.If sql_variant data is stored as a SQLVARIANT in a native-format data file, the data maintains all of its characteristics. I metadati che registrano il tipo di dati di ogni valore vengono archiviati insieme al valore stesso.The metadata that records the data type of each data value is stored along with the data value. Questi metadati vengono usati per creare di nuovo il valore con lo stesso tipo di dati in una colonna di destinazione sql_variant .This metadata is used to re-create the data value with the same data type in a destination sql_variant column.

    Se il tipo di dati della colonna di destinazione è diverso da sql_variant, ogni valore viene convertito nel tipo di dati della colonna di destinazione, in base alle regole standard di conversione implicita dei dati.If the data type of the destination column is not sql_variant, each data value is converted to the data type of the destination column, following the normal rules of implicit data conversion. Se si verifica un errore durante la conversione dei dati, viene eseguito il rollback del batch corrente.If an error occurs during data conversion, the current batch is rolled back. Per i valori char e varchar trasferiti tra colonne sql_variant possono verificarsi problemi relativi alla conversione di tabelle codici.Any char and varchar values that are transferred between sql_variant columns may have code page conversion issues.

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

Opzioni di comando per il formato nativoCommand Options for Native Format

È possibile importare i dati in formato nativo in una tabella con il comando bcp, l'istruzione BULK INSERT o l'istruzione INSERT ... SELECT * FROM OPENROWSET(BULK...).You can import native 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 nativo è supportato dalle opzioni di comando seguenti:Native format is supported by the following command options:

ComandoCommand OpzioneOption DescrizioneDescription
bcpbcp -n Determina l'uso del tipo di dati nativo da parte dell'utilità bcp.Causes the bcp utility to use the native data types of the data.
BULK INSERTBULK INSERT DATAFILETYPE ='native'DATAFILETYPE ='native' Utilizza i tipi di dati nativi o nativi estesi.Uses the native or wide native data types of the data. Si noti che DATAFILETYPE non è necessario se i tipi di dati vengono specificati in un file di formato.Note that DATAFILETYPE is not needed if a format file specifies the data types.
OPENROWSETOPENROWSET N/DN/A Deve usare un file di formatoMust use a format file

*Per caricare i dati nativi (-n) in un formato compatibile con le versioni precedenti dei client di SQL ServerSQL Server , usare l'opzione -V .*To load native (-n) 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 myNative e popola la tabella con alcuni valori iniziali.The script below creates a test database, a table named myNative 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.myNative ( 
   PersonID smallint NOT NULL,
   FirstName varchar(25) NOT NULL,
   LastName varchar(30) NOT NULL,
   BirthDate date,
   AnnualSalary money
   );

-- Populate table
INSERT TestDatabase.dbo.myNative
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.myNative;

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, myNative.fmt, sulla base dello schema di myNative.The following command will use the bcp utility to generate a non-xml format file, myNative.fmt, based on the schema of myNative. 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 i comandi seguenti:At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myNative format nul -f D:\BCP\myNative.fmt -T -n 

REM Review file
Notepad D:\BCP\myNative.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 nativo per l'esportazione di datiUsing bcp and Native Format to Export Data

-n e comando OUT .-n 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 i comandi seguenti:At a command prompt, enter the following commands:

bcp TestDatabase.dbo.myNative OUT D:\BCP\myNative.bcp -T -n

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

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

-n e comando IN .-n switch and IN command. Al prompt dei comandi immettere i comandi seguenti:At a command prompt, enter the following commands:

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

REM Import data
bcp TestDatabase.dbo.myNative IN D:\BCP\myNative.bcp -T -n

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

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

-n e -f e comando IN .-n and -f switches and IN command. Al prompt dei comandi immettere i comandi seguenti:At a command prompt, enter the following commands:

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

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

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

Uso di BULK INSERT e del formato nativo senza un file di formatoUsing BULK INSERT and Native 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.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
    FROM 'D:\BCP\myNative.bcp'
    WITH (
        DATAFILETYPE = 'native'
        );

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

Uso di BULK INSERT e del formato nativo con un file di formato non XMLUsing BULK INSERT and Native 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.myNative; -- for testing
BULK INSERT TestDatabase.dbo.myNative
   FROM 'D:\BCP\myNative.bcp'
   WITH (
        FORMATFILE = 'D:\BCP\myNative.fmt'
        );

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

Uso di OPENROWSET e del formato nativo con un file di formato non XMLUsing OPENROWSET and Native 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.myNative;  -- for testing
INSERT INTO TestDatabase.dbo.myNative
    SELECT *
    FROM OPENROWSET (
        BULK 'D:\BCP\myNative.bcp', 
        FORMATFILE = 'D:\BCP\myNative.fmt'  
        ) AS t1;

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

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)
Tipi di dati (Transact-SQL) Data Types (Transact-SQL)
sql_variant (Transact-SQL) sql_variant (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
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Usare il formato Unicode nativo per importare o esportare dati (SQL Server)Use Unicode Native Format to Import or Export Data (SQL Server)