SQL Server 2008 BULK INSERT 发生大容量插入数据转换错误(类型不匹配或者字符对于指定的代码页无效)?
我的表结构:runningjob(runningjobnumeric(18,0)notnull,insertimedatetimenotnull);BULKINSERT语...
我的表结构:
runningjob(runningjob numeric(18,0) not null,insertime datetime not null);
BULK INSERT语句为:
BULK INSERT runningjob FROM 'G:\data\job1.txt'
WITH
(
FIELDTERMINATOR =','
);
job1.txt中的数据:
46,201405060910
执行BULK INSERT时报错如下:
消息 4864,级别 16,状态 1,第 1 行
第 1 行、第 2 列(insertime)出现大容量加载数据转换错误(
)。
看到有人在SQL Server 2000中,出现类似问题,需要把datetime修改为datetimestamp即可。
但在SQL Server 2008 中,没有类似的数据类型。应该如何容纳上面的日期型的数据呢?
我修改为datetime2(7),能插入数据,但是查询出来是如下:
46 0506-09-10 00:00:00.0000000 展开
runningjob(runningjob numeric(18,0) not null,insertime datetime not null);
BULK INSERT语句为:
BULK INSERT runningjob FROM 'G:\data\job1.txt'
WITH
(
FIELDTERMINATOR =','
);
job1.txt中的数据:
46,201405060910
执行BULK INSERT时报错如下:
消息 4864,级别 16,状态 1,第 1 行
第 1 行、第 2 列(insertime)出现大容量加载数据转换错误(
)。
看到有人在SQL Server 2000中,出现类似问题,需要把datetime修改为datetimestamp即可。
但在SQL Server 2008 中,没有类似的数据类型。应该如何容纳上面的日期型的数据呢?
我修改为datetime2(7),能插入数据,但是查询出来是如下:
46 0506-09-10 00:00:00.0000000 展开
1个回答
展开全部
datetimestamp这东西没怎么了解,不太会。
没简单的方法就用我的麻烦方法吧,用VARCHAR(20)
导进来后,再向表增一个datetime列,然后Upate一下
UPDATE runningjob
SET 新列名=CONVERT(DATETIME,SUBSTRING(insertime,1,4)+'-'+SUBSTRING(insertime,5,2)+'-'+SUBSTRING(insertime,7,2)+' '+SUBSTRING(insertime,9,2)+':'+SUBSTRING(insertime,11,2))
www.rctong.com
没简单的方法就用我的麻烦方法吧,用VARCHAR(20)
导进来后,再向表增一个datetime列,然后Upate一下
UPDATE runningjob
SET 新列名=CONVERT(DATETIME,SUBSTRING(insertime,1,4)+'-'+SUBSTRING(insertime,5,2)+'-'+SUBSTRING(insertime,7,2)+' '+SUBSTRING(insertime,9,2)+':'+SUBSTRING(insertime,11,2))
www.rctong.com
更多追问追答
追问
表的数据是每隔5分钟插入一条,每次插入就一条数据。如果修改结构的话,就没有办法继续往里面插入数据了。
你说的对,我也采用了nvarchar(50)这个的数据类型把这列的数据导入进来,显示也正常。
下一个问题在于:如果按日期来筛选查询结果,这个时候应该怎么转换该字段的数据了?比如查一下5月份的所有符合条件的记录?
追答
也不需要改变表的结构,你先BLUK INSERT到张临时的表里,再SELECT INSERT到现在的表里就行。
我的办法就是先将数据导进来,然后把VARCHAR(50)的数据转成datetime,VARCHAR这列只是临时保存下数据,转好后就可以删掉。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询