SQL Bulk从未知文件名插入

时间:2015-04-12 15:20:43

标签: sql sql-server stored-procedures bulkinsert

我需要将.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'
    )

哪个有效,但这需要每次手动编辑每个存储过程。

我可以修改它来处理自己带有任何名字的文件吗?

1 个答案:

答案 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