0

我在 SQL Server 的数据库中创建了一个表,现在尝试通过导入向导将 CSV 导入同一个表,但出现以下错误:

Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "Invalid date format".
 (SQL Server Import and Export Wizard)

我尝试上传的 CSV 格式与我用来创建表格的格式完全相同,但问题似乎与日期有关:

返回的列状态为:“转换失败,因为数据值溢出了指定类型。”。(SQL Server 导入和导出向导)

原始 CSV 日期列的格式为:

EVENT_DT
31/12/2016 1:40
31/12/2016 2:55
31/12/2016 3:30
31/12/2016 3:30
31/12/2016 3:30

我试图上传的 CSV 看起来像:

EVENT_DT
2/04/2020 6:55
2/04/2020 3:50
2/04/2020 4:25
2/04/2020 5:45
2/04/2020 3:15
2/04/2020 3:15

我尝试database timestamp with precision [DT_DBTIMESTAMP2]在 Import Qizard 中将 EVENT_DT 数据类型更改为 when ,但仍然出现错误。

谁能指出我做错了什么?

4

1 回答 1

0

请尝试将平面文件数据导入所有数据类型为 varchar 的临时表(临时表)。

完成后,您可以在将数据传输到主表时根据需要将其转换为日期时间。

这是在将数据插入主表时如何将字符串转换为日期时间的方法。

DECLARE @temp1 TABLE (ID INT, EVENT_DT VARCHAR(20))

INSERT INTO @temp1 VALUES (1, '31/12/2016 1:40')
INSERT INTO @temp1 VALUES (2, '31/12/2016 2:55')
INSERT INTO @temp1 VALUES (3, '31/12/2016 3:30')
INSERT INTO @temp1 VALUES (4, '31/12/2016 3:30')
INSERT INTO @temp1 VALUES (5, '31/12/2016 3:30')

DECLARE @temp2 TABLE (ID INT, EVENT_DT DATETIME)

INSERT INTO @temp2
SELECT ID, convert(DATETIME, EVENT_DT, 103) FROM @temp1

SELECT * FROM @temp2
于 2020-04-06T02:51:52.643 回答