Mapping tra i tipi di dati nell'Importazione/Esportazione guidata SQL ServerData Type Mapping in the SQL Server Import and Export Wizard

Nell'Importazione/Esportazione guidata SQL ServerSQL Server è possibile impostare il nome, il tipo di dati e le proprietà del tipo di dati delle colonne nei nuovi file e tabelle di destinazione, ma non è possibile specificare conversioni personalizzate per i valori di colonna.In the SQL ServerSQL Server Import and Export Wizard, you can set the name, the data type, and the data type properties of columns in new destination tables and files, but you can't specify custom conversions for column values. Il mapping dei tipi di dati dall'origine alla destinazione risulta quindi di primaria importanza.As a result, the built-in mapping of data types from source to destination is important.

Come viene eseguito il mapping dei tipi di dati tra origine e destinazione durante la procedura guidata? How does the wizard map data types between source and destination?

La procedura guidata usa file di mapping installati da SQL ServerSQL Server Integration ServicesIntegration Services per eseguire il mapping dei tipi di dati da un tipo o una versione di database a un altro.The wizard uses mapping files that are installed by SQL ServerSQL Server Integration ServicesIntegration Services to map data types from one database system or version to another. Ad esempio, può eseguire il mapping da tipi di dati SQL ServerSQL Server a tipi di dati Oracle.For example, it can map from SQL ServerSQL Server data types to Oracle data types. Per impostazione predefinita, i file di mapping in formato XML sono installati nelle cartelle seguenti.By default, the mapping files in XML format are installed in the following folders.

  • C:\Program Files\Microsoft SQL Server\130\DTSMappingFiles\ (per 64 bit)C:\Program Files\Microsoft SQL Server\130\DTSMappingFiles\ (for 64-bit)
  • C:\Programmi\Microsoft file (x86) \Microsoft SQL Server\130\DTSMappingFiles\ (per i 32 bit).C:\Program Files (x86)\Microsoft SQL Server\130\DTSMappingFiles\ (for 32-bit).

    Se si modifica un file di mapping esistente o si aggiunge un nuovo file di mapping alla cartella, è necessario chiudere e riaprire l'Importazione/Esportazione guidata SQL ServerSQL Server o SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) per caricare il file di mapping nuovo o modificato.If you edit an existing mapping file, or add a new mapping file to the folder, you have to close and reopen the SQL ServerSQL Server Import and Export Wizard or SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) to load the new or changed mapping file.

È possibile modificare un file di mapping esistenteYou can change an existing mapping file

Se sono necessari modelli di mapping diversi tra i tipi di dati, è possibile aggiornare i file di mapping per modificare i modelli di mapping usati dalla procedura guidata.If your business requires different mappings between data types, you can update the mapping files to change the mappings used by the wizard. Se ad esempio si vuole eseguire il mapping del tipo di dati SQL ServerSQL Server nchar al tipo di dati DB2 GRAPHIC anziché al tipo di dati DB2 VARGRAPHIC durante il trasferimento di dati da SQL ServerSQL Server a DB2, è possibile modificare il mapping di nchar nel file di mapping SqlClientToIBMDB2.xml in modo da usare GRAPHIC anziché VARGRAPHIC.For example, if you want the SQL ServerSQL Server nchar data type to map to the DB2 GRAPHIC data type instead of the DB2 VARGRAPHIC data type when you transfer data from SQL ServerSQL Server to DB2, you can change the nchar mapping in the SqlClientToIBMDB2.xml mapping file to use GRAPHIC instead of VARGRAPHIC.

È possibile aggiungere un nuovo file di mappingYou can add a new mapping file

Integration ServicesIntegration Services installa i tipi di mapping tra le combinazioni di origine e destinazione più comuni. installs mappings between many commonly used combinations of source and destination. È comunque possibile aggiungere nuovi file di mapping alla directory MappingFiles per supportare anche altre combinazioni di origine e destinazione.You can also add new mapping files to the MappingFiles directory to support additional sources and destinations. I nuovi file di mapping devono essere conformi allo schema XSD pubblicato ed eseguire il mapping tra una combinazione univoca di origine e destinazione.The new mapping files must conform to the published XSD schema and must map between a unique combination of source and destination. Lo schema per i file di mapping, DataTypeMapping.xsd, è disponibile qui.The schema for mapping files, DataTypeMapping.xsd, is published here.

Esempio di file di mappingSample mapping file

Di seguito è riportata una parte del file di mapping XML che esegue il mapping tra tipi di dati SQL Server (o, più precisamente, tra i tipi di dati usati dal provider di dati .Net Framework per SQL Server) e tipi di dati Oracle.Here's a portion of the XML mapping file that maps from SQL Server data types (or, more specifically, from the data types used by the .Net Framework Data Provider for SQL Server) to Oracle data types. Nell'esempio viene eseguito il mapping di un tipo di dati SQL Server int a un tipo di dati Oracle INTEGER .As one example, you can see that a SQL Server int data type maps to an Oracle INTEGER data type.


<dtm:DataTypeMappings  
    xmlns:dtm="http://www.microsoft.com/SqlServer/Dts/DataTypeMapping.xsd"   
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    SourceType="System.Data.SqlClient.SqlConnection"   
    MinSourceVersion="*"   
    MaxSourceVersion="*"   
    DestinationType="MSDAORA;OraOLEDB.Oracle;System.Data.OracleClient.OracleConnection"   
    MinDestinationVersion="08.*"   
    MaxDestinationVersion="*">  

    <!-- smallint -->  
    <dtm:DataTypeMapping >  
        <dtm:SourceDataType>  
            <dtm:DataTypeName>smallint</dtm:DataTypeName>  
        </dtm:SourceDataType>  
        <dtm:DestinationDataType>  
            <dtm:SimpleType>  
                <dtm:DataTypeName>INTEGER</dtm:DataTypeName>  
            </dtm:SimpleType>  
        </dtm:DestinationDataType>  
    </dtm:DataTypeMapping>    

    <!-- int -->  
    <dtm:DataTypeMapping >  
        <dtm:SourceDataType>  
            <dtm:DataTypeName>int</dtm:DataTypeName>  
        </dtm:SourceDataType>  
        <dtm:DestinationDataType>  
            <dtm:SimpleType>  
                <dtm:DataTypeName>INTEGER</dtm:DataTypeName>  
            </dtm:SimpleType>  
        </dtm:DestinationDataType>  
    </dtm:DataTypeMapping>    

        ...  

</dtm:DataTypeMappings>