Utilizzare il formato Unicode nativo per importare o esportare dati (SQL Server)Use Unicode Native Format to Import or Export Data (SQL Server)

Il formato Unicode nativo risulta particolarmente utile quando è necessario copiare informazioni da un'installazione di MicrosoftMicrosoft SQL ServerSQL Server a un'altra.Unicode native format is helpful when information must be copied from one MicrosoftMicrosoft SQL ServerSQL Server installation to another. L'utilizzo del formato nativo per i dati non carattere consente di risparmiare tempo evitando di dover eseguire la conversione dei tipi di dati in formato carattere e viceversa.The use of native format for noncharacter data saves time, eliminating unnecessary conversion of data types to and from character format. L'utilizzo del formato carattere Unicode per tutti i dati di tipo carattere consente di evitare la perdita dei caratteri estesi durante il trasferimento bulk dei dati tra server che utilizzano tabelle codici diverse.The use of Unicode character format for all character data prevents loss of any extended characters during bulk transfer of data between servers using different code pages. Un file di dati in formato nativo Unicode è leggibile con qualsiasi metodo di importazione bulk.A data file in Unicode native format can be read by any bulk-import method.

Il formato nativo Unicode è consigliato per i trasferimenti bulk di dati tra più istanze di SQL ServerSQL Server utilizzando un file di dati che include caratteri estesi o DBCS.Unicode native format is recommended for the bulk transfer of data between multiple instances of SQL ServerSQL Server by using a data file that contains extended or DBCS characters. Per i dati non carattere, il formato nativo Unicode utilizza i tipi di dati (database) nativi.For noncharacter data, Unicode native format uses native (database) data types. Per i dati di tipo carattere quali char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max)e ntextil formato nativo Unicode usa il formato di dati di tipo carattere Unicode.For character data, such as char, nchar, varchar, nvarchar, text, varchar(max), nvarchar(max), and ntext, the Unicode native format uses Unicode character data format.

I dati sql_variant memorizzati come SQLVARIANT in un file di dati in formato nativo Unicode vengono gestiti in modo analogo a quanto avviene per un file di dati in formato nativo, fatta eccezione per il fatto che i valori char e varchar vengono convertiti in nchar e nvarchar, raddoppiando lo spazio necessario per le colonne interessate.The sql_variant data that is stored as a SQLVARIANT in a Unicode native-format data file operates in the same manner as it does in a native-format data file, except that char and varchar values are converted to nchar and nvarchar, which doubles the amount of storage required for the affected columns. I metadati originali vengono mantenuti e i valori riconvertiti nel tipo di dati char e varchar originale quando viene eseguita l'importazione in blocco in una colonna di tabella.The original metadata is preserved, and the values are converted back to their original char and varchar data type when bulk imported into a table column.

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

Opzioni di comando per il formato nativo UnicodeCommand Options for Unicode Native Format

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

ComandoCommand OpzioneOption DescrizioneDescription
bcpbcp -N-N Determina l'uso del formato nativo Unicode da parte dell'utilità bcp . Questo formato usa i tipi di dati (database) nativi per tutti i dati di tipo non carattere e il formato di dati carattere Unicode per tutti i dati di tipo carattere (char, nchar, varchar, nvarchar, texte ntext).Causes the bcp utility to use the Unicode native format, which uses native (database) data types for all noncharacter data and Unicode character data format for all character (char, nchar, varchar, nvarchar, text, and ntext) data.
BULK INSERTBULK INSERT DATAFILETYPE ='widenative'DATAFILETYPE ='widenative' Usa il formato nativo Unicode per l'importazione bulk dei dati.Uses Unicode native format when bulk importing data.
OPENROWSETOPENROWSET N/DN/A Deve usare un file di formatoMust use a format file
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 myWidenative e popola la tabella con alcuni valori iniziali.The script below creates a test database, a table named myWidenative 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.myWidenative ( 
    PersonID smallint NOT NULL,
    FirstName nvarchar(25) NOT NULL,
    LastName nvarchar(30) NOT NULL,
    BirthDate date,
    AnnualSalary money
);

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

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

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, myWidenative.fmt, sulla base dello schema di myWidenative.The following command will use the bcp utility to generate a non-xml format file, myWidenative.fmt, based on the schema of myWidenative. 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.myWidenative format nul -f D:\BCP\myWidenative.fmt -T -N

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

Opzione-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.myWidenative OUT D:\BCP\myWidenative.bcp -T -N

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

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

Opzione-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.myWidenative;"

REM Import data
bcp TestDatabase.dbo.myWidenative IN D:\BCP\myWidenative.bcp -T -N

REM Review results is SSMS

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

Opzioni-N e -f switches e IN comme.-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.myWidenative;"

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

REM Review results is SSMS

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

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

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

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

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

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

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)