SQL 从未知文件名批量插入
SQL Bulk Insert from unknown file name
我需要将 .csv 文件中的数据批量插入到我的数据库中。
然而,这些 .csv 文件的名称未知,例如
"es[a_random_date_and_time_here]person.csv"
自动取款机我有...
BULK INSERT TestDB.dbo.tblPersonsImport
FROM 'C:\Users\Josh\Desktop\Test\es20150301195906person.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a'
)
这可行,但是,这需要每次都手动编辑每个存储过程。
我可以修改它来处理自己带有任何名称的文件吗?
对于这种情况,您可以使用动态 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
我需要将 .csv 文件中的数据批量插入到我的数据库中。
然而,这些 .csv 文件的名称未知,例如 "es[a_random_date_and_time_here]person.csv"
自动取款机我有...
BULK INSERT TestDB.dbo.tblPersonsImport
FROM 'C:\Users\Josh\Desktop\Test\es20150301195906person.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a'
)
这可行,但是,这需要每次都手动编辑每个存储过程。
我可以修改它来处理自己带有任何名称的文件吗?
对于这种情况,您可以使用动态 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