sql - 批量插入日期时间数据

标签 sql sql-server

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

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/

相关文章:

SQL:指定列名引用的表

mysql - 如何更改数据库中的整行以将 l 更改为左,将 r 更改为右

Mysql - 如何找到带小数的最大值

sql - 来自规范化 SQL 数据库的数据的表格 View

sql - 合并 - 仅在值发生更改时更新

sql-server - 如何对我的 SSIS 包进行单元测试和集成测试?

c# - SQL 批量目标表名

c# - 如何在每个报告页面中重复文本框?

sql - 使用 ORDER BY 后将具有相似列数据的行排列在一起

php - 将 3 个查询优化为一个