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