我需要将.csv文件中的数据批量插入我的数据库。
然而,这些.csv文件以未知名称到达,例如 " ES [a_random_date_and_time_here] person.csv"
Atm我有......
BULK INSERT TestDB.dbo.tblPersonsImport
FROM 'C:\Users\Josh\Desktop\Test\es20150301195906person.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a'
)
哪个有效,但这需要每次手动编辑每个存储过程。
我可以修改它来处理自己带有任何名字的文件吗?
答案 0 :(得分:2)
对于这种情况,您可以使用动态sql并使用指定的文件名调用sp。请参阅以下代码:
Create PROCEDURE dbo.LoadFile (@fileName varchar(250))
AS
SET NOCOUNT ON
declare @query varchar(4000) =
'
BULK INSERT TestDB.dbo.tblPersonsImport
FROM ''C:\Users\Josh\Desktop\Test\'+@fileName+'''
WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''0x0a''
)
'
exec (@query)
return (0)
GO