我尝试以这种格式批量插入一些日期时间值:
2005 年 12 月 31 日 00:00:00
使用这样的东西:
create table Seed
(
StartDate datetime not null
)
BULK INSERT Seed
FROM 'd:\dump\Seed.txt'
WITH
(
firstrow=2,
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
但是我明白了:
行的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)
我知道如何定义一个代码页,但是哪个呢?有没有简单的解决方案?
谢谢。
基督徒
最佳答案
运行此 T-SQL 时登录到 SQL 实例的用户的默认语言是什么?您指定的日期格式 31/12/2005 00:00:00 看起来是英国的,也许您的默认语言是 US_English。
尝试运行此 T-SQL 以确定您当前的语言:
SELECT @@language, @@langid
如果是US_English,那么你的日期格式应该是mm/dd/yyyy hh:mm:ss
为了让您的示例保持活力,请尝试通过执行以下操作更改当前用户的默认语言:
--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
。
希望一切顺利!
关于sql - 批量插入日期时间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034257/