日期字段上的批量错误但插入作品 SQL 服务器
Bulk error on date field but insert into works SQL Server
我正在尝试批量插入 table 但我一直收到此错误
Msg 4864, Level 16, State 1, Line 2
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (HEURE).
这是我的 table
的创建脚本
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[GST_TempDelete]
(
[HEURE] [DATETIME] NULL,
[Typebase] [FLOAT] NULL,
[DATE] [DATETIME] NULL,
[CHP] [NVARCHAR](4000) NULL,
[tab] [NVARCHAR](4000) NULL,
[ref1] [NVARCHAR](400) NULL,
[ref2] [NVARCHAR](400) NULL
) ON [PRIMARY]
GO
这是我要用于批量插入的文件的内容
14:50:07|1|21/03/2019|SOMETEXT|PARAMbase|00000|54141|
14:50:07|1|21/03/2019|TEST|TEST|00000|54141|
这是批量插入查询
SET LANGUAGE FRENCH
BULK INSERT GST_TempDelete
FROM 'D:\TEST_DATA\TEMP\bulkInsert.txt'
WITH (FIELDTERMINATOR ='|',ROWTERMINATOR = '|')
当我尝试使用批量文件中的值通过 INSERT INTO
插入数据时,它有效,但 bulk insert
本身一直失败。
这是 INSERT INTO
查询:
INSERT INTO GST_TempDelete
VALUES ('14:50:07', '1', '21/03/2019', 'TEST', 'TEST', '00000', '54141')
请帮我解决这个问题。
提前致谢
找到问题了:它是关于日期列的。 “21/03/2019”是正确的值。
SET DATEFORMAT dmy;
insert into GST_TempDelete values('14:50:07','1.0','21/03/2019','TEST','TEST','00000','54141')
14:50:07|1|21/03/2019|SOMETEXT|PARAMbase|00000|54141|
CSV 文件的第一列显然是时间格式。而它在 table 的 DDL 中具有 DATETIME 类型。所以,它似乎从 DATETIME
更改为 TIME
CREATE TABLE [dbo].[GST_TempDelete](
[HEURE] [time] NULL,
[Typebase] [float] NULL,
[DATE] [datetime] NULL,
[CHP] [nvarchar](4000) NULL,
[tab] [nvarchar](4000) NULL,
[ref1] [nvarchar](400) NULL,
[ref2] [nvarchar](400) NULL
) ON [PRIMARY]
GO
SET LANGUAGE FRENCH
BULK INSERT GST_TempDelete FROM 'D:\TEST_DATA\TEMP\bulkInsert.txt' WITH (FIELDTERMINATOR ='|',ROWTERMINATOR = '|')
When i try inserting data with Insert into using the values from the
bulk file, it works but the bulk insert itself keeps failing
这可能是因为:
BULK INSERT enforces strict data validation and data checks of data
read from a file that could cause existing scripts to fail when they
are executed on invalid data.
参考:https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017
我正在尝试批量插入 table 但我一直收到此错误
Msg 4864, Level 16, State 1, Line 2
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (HEURE).
这是我的 table
的创建脚本SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[GST_TempDelete]
(
[HEURE] [DATETIME] NULL,
[Typebase] [FLOAT] NULL,
[DATE] [DATETIME] NULL,
[CHP] [NVARCHAR](4000) NULL,
[tab] [NVARCHAR](4000) NULL,
[ref1] [NVARCHAR](400) NULL,
[ref2] [NVARCHAR](400) NULL
) ON [PRIMARY]
GO
这是我要用于批量插入的文件的内容
14:50:07|1|21/03/2019|SOMETEXT|PARAMbase|00000|54141|
14:50:07|1|21/03/2019|TEST|TEST|00000|54141|
这是批量插入查询
SET LANGUAGE FRENCH
BULK INSERT GST_TempDelete
FROM 'D:\TEST_DATA\TEMP\bulkInsert.txt'
WITH (FIELDTERMINATOR ='|',ROWTERMINATOR = '|')
当我尝试使用批量文件中的值通过 INSERT INTO
插入数据时,它有效,但 bulk insert
本身一直失败。
这是 INSERT INTO
查询:
INSERT INTO GST_TempDelete
VALUES ('14:50:07', '1', '21/03/2019', 'TEST', 'TEST', '00000', '54141')
请帮我解决这个问题。
提前致谢
找到问题了:它是关于日期列的。 “21/03/2019”是正确的值。
SET DATEFORMAT dmy;
insert into GST_TempDelete values('14:50:07','1.0','21/03/2019','TEST','TEST','00000','54141')
14:50:07|1|21/03/2019|SOMETEXT|PARAMbase|00000|54141|
CSV 文件的第一列显然是时间格式。而它在 table 的 DDL 中具有 DATETIME 类型。所以,它似乎从 DATETIME
更改为 TIME
CREATE TABLE [dbo].[GST_TempDelete](
[HEURE] [time] NULL,
[Typebase] [float] NULL,
[DATE] [datetime] NULL,
[CHP] [nvarchar](4000) NULL,
[tab] [nvarchar](4000) NULL,
[ref1] [nvarchar](400) NULL,
[ref2] [nvarchar](400) NULL
) ON [PRIMARY]
GO
SET LANGUAGE FRENCH
BULK INSERT GST_TempDelete FROM 'D:\TEST_DATA\TEMP\bulkInsert.txt' WITH (FIELDTERMINATOR ='|',ROWTERMINATOR = '|')
When i try inserting data with Insert into using the values from the bulk file, it works but the bulk insert itself keeps failing
这可能是因为:
BULK INSERT enforces strict data validation and data checks of data read from a file that could cause existing scripts to fail when they are executed on invalid data.
参考:https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017