首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大容量插入datetime数据

大容量插入datetime数据
EN

Stack Overflow用户
提问于 2010-10-27 22:19:01
回答 2查看 13.9K关注 0票数 3

我尝试以这种格式批量插入一些日期时间值:

31-12-2005 00:00:00

使用类似这样的东西:

代码语言:javascript
复制
create table Seed
(
    StartDate datetime not null
)
BULK INSERT Seed
FROM 'd:\dump\Seed.txt' 
WITH 
( 
    firstrow=2,
    FIELDTERMINATOR = '\t', 
    ROWTERMINATOR = '\n'
)

但我得到的是:

行的大容量加载数据转换错误(类型不匹配或指定代码页的字符无效)

我知道如何定义代码页,但是是哪一个呢?有没有简单的解决方案?

谢谢。

克里斯蒂安

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-27 23:02:41

运行此T-SQL时,登录到SQL实例的用户的默认语言是什么?您指定的日期格式31/12/2005 00:00:00看起来是英国的,您的默认语言可能是US_English。

尝试运行此T-SQL以确定您的当前语言:

代码语言:javascript
复制
SELECT @@language, @@langid

如果是US_English,则日期格式应为mm/dd/yyyy hh:mm:ss

要使示例保持活动状态,请尝试通过执行以下操作来更改当前用户的默认语言:

代码语言:javascript
复制
--Get the current language setting for connected user
SELECT @@LANGUAGE,@@LANGID

--Get information about all languages
EXEC sys.sp_helplanguage

--Get the name of the current user
DECLARE @sysuser NVARCHAR(30)

SET @sysuser = SYSTEM_USER

PRINT @sysuser
EXEC sp_defaultlanguage @sysuser, 'british' --satisfying your example date

更改默认语言后,重新连接查询窗口,现在应该可以使用新的默认语言了。

要返回到以前的语言设置,只需使用以前的语言设置再次EXEC sp_defaultlanguage即可。

希望这能起作用!

票数 3
EN

Stack Overflow用户

发布于 2010-10-27 22:33:29

SQL Server不会正确转换DD/MM/YYYY日期格式。您需要将输入文件重新格式化为MM/DD/YYYY或插入到char/varchar数据类型中,然后将字符串处理为另一个日期时间列的正确格式。例如:

代码语言:javascript
复制
create table TempSeed
(
    StartDate varchar(50) not null
)

BULK INSERT TempSeed
FROM 'd:\dump\Seed.txt' 
WITH 
( 
    firstrow=2,
    FIELDTERMINATOR = '\t', 
    ROWTERMINATOR = '\n'
)

create table Seed
(
    StartDate datetime not null
)

insert into Seed
    (StartDate)
    select CAST(substring(ts.StartDate,4,3) + stuff(ts.StartDate,4,3,'') as datetime)
        from TempSeed ts
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4034257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档