BCP插入跳过一个DB列

问题描述 投票:0回答:1

我正在使用文件格式为XML的BCP从CSV导入SQL数据库。

直到我添加一个名为DATERIF的新列,该列我都应该跳过,但是我不能。使用以下模板,导入不会填充该列,而是跳过该列,而最后一个(MODELLO)为空,我试图在第六列之后添加一行这样的行,但是在这种情况下,运行时会引发错误。

<COLUMN SOURCE="0" NAME="DATERIF" xsi:type="SQLDATETIME" />

这里是完整的模板文件

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
        <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="2" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="3" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="4" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="5" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="6" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="7" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="8" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="9" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="10" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
        <FIELD ID="11" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="20"
               COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    </RECORD>
    <ROW>
        <COLUMN SOURCE="1" NAME="HOSTNAME" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="2" NAME="IP_MACCH" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="3" NAME="LOGIN" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="4" NAME="T_TYPE" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="5" NAME="DATA_RIL" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="6" NAME="ORA_RIL" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="0" NAME="DATERIF" xsi:type="SQLDATETIME"/>
        <COLUMN SOURCE="7" NAME="CUSTOMER" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="8" NAME="NUMORDINE" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="9" NAME="OPERATORE" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="10" NAME="SERIALNUM" xsi:type="SQLVARYCHAR" LENGTH="20"/>
        <COLUMN SOURCE="11" NAME="MODELLO" xsi:type="SQLVARYCHAR" LENGTH="20"/>
    </ROW>
</BCPFORMAT>

如何在以下字段中跳过此字段的导入?谢谢安德里亚

sql xml bcp
1个回答
0
投票

我假设您正在使用MS SQL Server。通过使用视图可以解决数据库表具有一个或几个其他列的情况。该视图定义需要排除不需要的列。之后,您可以批量插入视图而不是数据库表。

在BOL中有记录:Using BULK INSERT with a view

© www.soinside.com 2019 - 2024. All rights reserved.