2016-03-04 68 views
0

背景: 试图通过批量插入将平面文件源中的数据批量插入到数据库中。给以下。大容量插入错误的SQL存储过程MSG 241

错误

Msg 241, Level 16, State 1, Line 2 
Conversion failed when converting date and/or time from character string. 

例行从数据:

2016-01-14 00:00:00   GTM   clocktic       

格式文件(.XML)

<?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="\t" MAX_LENGTH="20"/> 
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="6" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="7" xsi:type="CharTerm" TERMINATOR="\t" MAX_LEN GTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="8" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="9" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="10" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="11" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="12" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
    <FIELD ID="13" xsi:type="CharTerm" TERMINATOR="\n" MAX_LENGTH="#" COLLATION="Finnish_Swedish_CI_AS"/> 
</RECORD> 
<ROW> 
    <COLUMN SOURCE="1" NAME="TStamp" xsi:type="SQLDATETIME"/> 
    <COLUMN SOURCE="2" NAME="var2" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="3" NAME="var3" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="4" NAME="var4" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="5" NAME="var5" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="6" NAME="var6" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="7" NAME="var7" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="8" NAME="var8" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="9" NAME="var9" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="10" NAME="var10" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="11" NAME="var11" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="12" NAME="var12" xsi:type="SQLVARYCHAR"/> 
    <COLUMN SOURCE="13" NAME="var13" xsi:type="SQLVARYCHAR"/> 
</ROW> 
</BCPFORMAT> 
+1

引用此:http://stackoverflow.com/questions/14119133/conversion-failed-when-converting-date-and-or-time-from-character-string-while-i – TheGameiswar

回答

0

通过创建一个.fmt文件(之前有一个XML格式文件)并将数据导入适当的列来解决此问题。解决方案并不总是很难。只需要把事情做好就可以了!

0

尝试012在导入之前,请输入。

如果不工作:

  • 有出口过程中的出口日期/的格式倍SQL Server可以解析:YYYY-MM-DDThh:mm:ss[.mmm](文字字符T在中间)或YYYYMMDD[ hh:mm:ss[.mmm]](CF DATETIME
  • 将数据导入登台表,然后通过将varchar转换为日期时间插入到最终表中。
  • 使用不同的方式导入数据,例如SQL Server Integration Services。
+0

尝试设置dateformat为ymd,当我尝试了你的第一个建议(在10行的临时数据中,我得到消息4864,16级,状态1,行2 第1行,列的批量加载数据转换错误(类型不匹配或指定代码页的字符无效) 1(Id)。) – Froxer

+0

@Froxer可能是因为临时表上的排序规则与您的格式文件中的排序规则不同? –

+0

我不明白: 1从数据库列: [OBJEKT] [VARCHAR(20)COLLATE Finnish_Swedish_CI_AS NULL, 他们使用相同的代码页? – Froxer