我正在尝试使用批量插入将数据从 csv 文件插入到 sql server 表中,但它返回 0 行。
这是我正在使用的批量插入语句
BULK INSERT dbo.DEA_Availability from 'C:\SQLPOWERDOC\CSV\DEA_Availability.csv'
with (
FIRSTROW=2,
FIELDTERMINATOR=',',
ROWTERMINATOR='\r\n',
ERRORFILE = 'C:\SQLPOWERDOC\CSV\DEA_Availability_ERROR.log',
DATAFILETYPE='char',
keepnulls
)
表定义为:
CREATE TABLE [dbo].[DEA_AVAILABILITY](
[Server_Name] [varchar](max) NULL,
[Database_Name] [varchar](max) NULL,
[Priority] [varchar](max) NULL,
[Description] [varchar](max) NULL,
[Details] [varchar](max) NULL,
[URL] [varchar](max) NULL,
[IMPORT_DATE] [datetime2](7) NULL
) ON [PRIMARY]
GO
这是 CSV 文件的内容
Server Name,Database Name,Priority,Description,Details,URL
HOSTNAME,,None,Cluster Node,This is a node in a cluster.,http://msdn.microsoft.com/en-us/library/ms189134(v=sql.100).aspx
我已验证 CSV 文件的每一行都以 \r\n 结尾
要使其正常工作:
在这些更改之后,数据可以正确导入。注意:如果您希望 IMPORT_DATE 作为 NULL 而不是使用当前日期,请跳过步骤 3。
我终于能够回到这个过程并让它发挥作用。我能够通过执行以下操作使其工作
import_date
列KEEPNULLS
从我的命令中删除GETDATE()
我确实为该字段添加了一个默认值import_date
,我认为这不是必需的,但它是有意义的,并且是一个更好的设计import_Date
我相信格式文件是必需的,因为将字段添加到每个 CSV 文件是不可行的。有问题的表/csv 只是每天生成多次的一组 84 个文件/表中的一个,我无法控制生成文件的格式。