从.txt文件中使用自动增量键插入TSQL批量插入



错误im获取

这是插入已经创建的表:

 CREATE TABLE SERIES(
SERIES_NAME VARCHAR(225) NOT NULL UNIQUE, --MADE VARCHAR(225) & UNIQUE FOR FK REFERENCE
ONGOING_SERIES BIT, --BOOL FOR T/F IF SERIES IS COMPLETED OR NOT
RUN_START DATE, 
RUN_END DATE,
MAIN_CHARACTER VARCHAR(20),
PUBLISHER VARCHAR(12),
S_ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
CONSTRAINT chk_DATES CHECK (RUN_START < RUN_END)
)       

和文本文件的组织为:

绿灯侠,2005-07-07-01,2011-09-01,Hal Jordan,DC

蜘蛛侠,2005-07-07-01,2011-09-01,彼得·帕克(Peter Parker(,漫威

我已经尝试在.txt文件中的每行末尾添加逗号我还尝试将"添加到每行的末端。有任何建议吗?

的确,保留识别可防止发生散装插入物。但是,删除该声明无法解决问题。

Msg 4864, Level 16, State 1, Line 13
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 7 (S_ID).

批量插入期望更新所有列。解决此问题的另一种方法是为文本文件添加格式文件,请参阅MS DOCS-使用格式文件进行批量导入数据

您可以使用以下命令为文本文件创建格式文件。

bcp yourdatabase.dbo.series format nul -c -f D:test.fmt -t, -T

删除最后一行,更新列的数量,然后用行终端替换最后一个逗号。结果看起来如下所示。

13.0
6
1       SQLCHAR             0       255     ","      1     SERIES_NAME                      SQL_Latin1_General_CP1_CI_AS
2       SQLCHAR             0       1       ","      2     ONGOING_SERIES                   ""
3       SQLCHAR             0       11      ","      3     RUN_START                        ""
4       SQLCHAR             0       11      ","      4     RUN_END                          ""
5       SQLCHAR             0       510     ","      5     MAIN_CHARACTER                   SQL_Latin1_General_CP1_CI_AS
6       SQLCHAR             0       510     "rn"   6     PUBLISHER                        SQL_Latin1_General_CP1_CI_AS

从您的批量插入中删除 KEEPIDENTIY,因为这指定要使用源文本文件中的值作为您的身份。

如果仍然失败,请尝试在表中排除身份字段的表上添加一个视图,然后将其插入其中,例如:

CREATE VIEW SeriesBulkInsertTarget 
AS
    SELECT Series_Name,
        Ongoing_Series,
        Run_Start,
        Run_End,
        Main_Character,
        Publisher
    FROM SERIES

最新更新