首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -不能大容量加载

SQL -不能大容量加载
EN

Stack Overflow用户
提问于 2022-01-26 10:47:11
回答 1查看 190关注 0票数 0

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

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

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

有没有人有办法解决这个问题,我花了好几个小时来找一个。

我的代码

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

代码语言:javascript
复制
CREATE TABLE [dbo].[data_cube](
    [Name] [nvarchar](1000) NULL,
    [Country][nvarchar](1000) NULL,
    [Occupation][nvarchar](1000) NULL,
    [Hobby][nvarchar](1000) NULL
) on [Primary]

2.创建表以存储导入文件上的信息

代码语言:javascript
复制
CREATE TABLE [dbo].[files_logtable](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [filename] [varchar](200) NULL,
    [date_created] [datetime] DEFAULT GETDATE()
)ON [Primary]

3.创建存储过程

代码语言:javascript
复制
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.在文件中阅读

代码语言:javascript
复制
Exec import_files 'C:\Users\cob2202\Desktop\Files\Data Cube\FlatFileSource\', '*.csv', 'data_cube'
EN

回答 1

Stack Overflow用户

发布于 2022-01-27 05:30:10

是否验证了sql server服务是否具有访问该文件夹的权限?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70862218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档