从 CSV 到 Microsoft SQL 服务器的日期导入
Date import from CSV to Microsoft SQL Server
我正在尝试使用 Microsoft SQL 服务器管理工作室中的 SQL 服务器导入向导将包含数据的 csv 文件导入我的 SQL 服务器。
CSV 文件日期如下所示:
02-04-2021
03-04-2021
05-04-2021
06-04-2021
07-04-2021
08-04-2021
09-04-2021
10-04-2021
12-04-2021
13-04-2021
14-04-2021
15-04-2021
16-04-2021
17-04-2021
19-04-2021
20-04-2021
21-04-2021
22-04-2021
23-04-2021
24-04-2021
26-04-2021
27-04-2021
28-04-2021
29-04-2021
30-04-2021
在向导中,我选择了源数据类型作为日期,而目标 table 的数据类型为日期(我也试过 datetime、datetime2,都是同样的问题)
导入成功完成,但结果是:
2021-01-04
2021-02-04
2021-03-04
2021-05-04
2021-06-04
2021-07-04
2021-08-04
2021-09-04
2021-10-04
2021-12-04
2021-04-13
2021-04-14
2021-04-15
2021-04-16
2021-04-17
2021-04-19
2021-04-20
2021-04-21
2021-04-22
2021-04-23
2021-04-24
2021-04-26
2021-04-27
2021-04-28
2021-04-29
2021-04-30
如您所见,日期和月份混合,日期错误。有些行是正确的,但有些行是月而不是日。
我能做什么?
谢谢!
这是在 SSMS 中通过 T-SQL 执行的操作。
正如@Lamu 所指出的,输入文件日期格式不明确。所以下面一行准确地指定了它:
SET DATEFORMAT DMY;
SQL
USE tempdb;
GO
DROP TABLE IF EXISTS dbo.tbl;
CREATE TABLE dbo.tbl
(
inputDate DATE
);
-- to let know format of the date in the *.csv file
SET DATEFORMAT DMY;
BULK INSERT dbo.tbl
FROM 'e:\temp\Faenno.csv'
WITH
(
DATAFILETYPE = 'char', --widechar',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
CODEPAGE = '65001'
);
SELECT * FROM dbo.tbl;
我正在尝试使用 Microsoft SQL 服务器管理工作室中的 SQL 服务器导入向导将包含数据的 csv 文件导入我的 SQL 服务器。
CSV 文件日期如下所示:
02-04-2021
03-04-2021
05-04-2021
06-04-2021
07-04-2021
08-04-2021
09-04-2021
10-04-2021
12-04-2021
13-04-2021
14-04-2021
15-04-2021
16-04-2021
17-04-2021
19-04-2021
20-04-2021
21-04-2021
22-04-2021
23-04-2021
24-04-2021
26-04-2021
27-04-2021
28-04-2021
29-04-2021
30-04-2021
在向导中,我选择了源数据类型作为日期,而目标 table 的数据类型为日期(我也试过 datetime、datetime2,都是同样的问题) 导入成功完成,但结果是:
2021-01-04
2021-02-04
2021-03-04
2021-05-04
2021-06-04
2021-07-04
2021-08-04
2021-09-04
2021-10-04
2021-12-04
2021-04-13
2021-04-14
2021-04-15
2021-04-16
2021-04-17
2021-04-19
2021-04-20
2021-04-21
2021-04-22
2021-04-23
2021-04-24
2021-04-26
2021-04-27
2021-04-28
2021-04-29
2021-04-30
如您所见,日期和月份混合,日期错误。有些行是正确的,但有些行是月而不是日。
我能做什么?
谢谢!
这是在 SSMS 中通过 T-SQL 执行的操作。
正如@Lamu 所指出的,输入文件日期格式不明确。所以下面一行准确地指定了它:
SET DATEFORMAT DMY;
SQL
USE tempdb;
GO
DROP TABLE IF EXISTS dbo.tbl;
CREATE TABLE dbo.tbl
(
inputDate DATE
);
-- to let know format of the date in the *.csv file
SET DATEFORMAT DMY;
BULK INSERT dbo.tbl
FROM 'e:\temp\Faenno.csv'
WITH
(
DATAFILETYPE = 'char', --widechar',
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
CODEPAGE = '65001'
);
SELECT * FROM dbo.tbl;