【问题标题】:SQL - Cannot bulk loadSQL - 无法批量加载
【发布时间】:2022-01-26 10:47:11
【问题描述】:

我正在尝试将多个 CSV 文件批量上传到 SSMS。 我使用适当的列名创建了表,但是当我执行代码时,对包含 CSV 文件的文件夹的访问被拒绝。

我在网上看到您需要将文件存储在服务器所在的同一位置,但这对我来说不是一个选项。

我也尝试编辑 CSV 文件所在文件夹的权限,但访问仍然被拒绝。

有没有人可以解决这个问题,我已经花了好几个小时试图找到一个。

我的代码

1.创建一个表来存储 CSV 信息。

CREATE TABLE [dbo].[data_cube](
    [Name] [nvarchar](1000) NULL,
    [Country][nvarchar](1000) NULL,
    [Occupation][nvarchar](1000) NULL,
    [Hobby][nvarchar](1000) NULL
) on [Primary]

2。创建表以存储有关导入文件的信息

CREATE TABLE [dbo].[files_logtable](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [filename] [varchar](200) NULL,
    [date_created] [datetime] DEFAULT GETDATE()
)ON [Primary]

3.创建存储过程

CREATE PROCEDURE import_files @filepath varchar(500), @pattern varchar(100), @tablename varchar(100)
AS
BEGIN

DECLARE @query varchar(1000), @moveProcessed varchar(1000)

CREATE TABLE #x(name varchar(200))

set @query = 'master.dbo.xp_cmdshell "dir '+@filepath+@pattern+' /b"'

insert #x exec (@query)

delete from #x where name IS NULL

select identity(int,1,1) as ID,name into #y from #x

drop table #x

Declare @max1 int, @count1 int, @filename varchar(200)

set @max1 = (select max(ID) from #y)

set @count1 = 0

while @count1 < @max1
BEGIN
SET @count1 = @count1+1

SET @filename = (select name from #y where [id]=@count1)

set @query = 'BULK INSERT '+@tablename+' FROM "'+@filepath+@filename+'" WITH (FIELDTERMINATOR = '','',FIRSTROW=1,ROWTERMINATOR=''\n'')'

EXEC (@query)

insert into file_logtable(filename) select @filename

set @moveProcessed = 'MOVE "'+@filepath+@filepath+'" C:\Users\cob2202\Desktop\Files\Data Cube\FlatFileDestination\"'+SUBSTRING(@filename,1, LEN(@filename) -4)+'_'+cast(FORMAT(getdate(),'yyyMMDDHHmmss') as varchar)+'.csv"'


EXEC master..XP_cmdshell @moveProcessed
END

END

4.读入文件

Exec import_files 'C:\Users\cob2202\Desktop\Files\Data Cube\FlatFileSource\', '*.csv', 'data_cube'

【问题讨论】:

    标签: sql csv bulkinsert


    【解决方案1】:

    您是否验证过 sql server 服务有权访问该文件夹?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      相关资源
      最近更新 更多