如何用sql语句将一个文件夹下的所有txt文件导入到数据库中急!在线等

求方法说的明白点谢谢... 求 方法说的明白点谢谢 展开
 我来答
2zhyi
推荐于2017-11-26
知道答主
回答量:35
采纳率:100%
帮助的人:10.5万
展开全部
使用场景: 比如将 C:\Test\ 目录下的所有 txt文件内容 导入到 Table_1 中

--定义临时表,用于存放获取的文件名称
CREATE TABLE #files (name varchar(200) NULL, sql varchar(7000) NULL)
--获取文件名称,存放在#files
INSERT #files(name)
exec master..xp_cmdshell 'dir c:\test /b'
--删除不要的文件名称
DELETE #files WHERE coalesce(name, '') NOT LIKE 'Code%'

--插入需要 导入文件内容的 命令SQL,需要修改 Table_1(改为导入的Table)和文件路径

UPDATE #files
SET sql = 'BULK INSERT Table_1 FROM ''' + 'C:\Test\'+name + ''' WITH (' +
'DATAFILETYPE = ''char'', FIELDTERMINATOR = ''\t'', ' +
'ROWTERMINATOR = ''\n'')'

--开始执行导入
DECLARE @sql varchar(8000)

DECLARE cur CURSOR STATIC LOCAL FOR
SELECT sql FROM #files

OPEN cur

WHILE 1 = 1
BEGIN
FETCH cur INTO @sql
IF @@fetch_status <> 0
BREAK

EXEC(@sql)
END

DEALLOCATE cur

主要分为读取文件夹下所有文件和导入文件内容两部分
--读取文件夹下所有文件
declare @files table (ID int IDENTITY, FileName varchar(100))
insert into @files execute xp_cmdshell 'dir c:\test /b'
select 'c:\'+ [FileName] AS FILEPATH INTO #temp from @files
SELECT * FROM #temp
--导入文件内容
BULK INSERT dbo.Table_1
FROM #temp
WITH
(
ROWTERMINATOR ='\n'
)

还需要开启
/***** Step 1 开启 xp_cmdshell
Use Master
GO
EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
GO
*******/
参考:
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/47c8edc1-8cad-4a24-a09a-3fc0c943325c/bulk-insert-multiple-files-tsql
圣鸾OJ
2015-09-30 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:113万
展开全部
使用场景: 比如将 C:\Test\ 目录下的所有 txt文件内容 导入到 Table_1 中

--定义临时表,用于存放获取的文件名称
CREATE TABLE #files (name varchar(200) NULL, sql varchar(7000) NULL)
--获取文件名称,存放在#files
INSERT #files(name)
exec master..xp_cmdshell 'dir c:\test /b'
--删除不要的文件名称
DELETE #files WHERE coalesce(name, '') NOT LIKE 'Code%'

--插入需要 导入文件内容的 命令SQL,需要修改 Table_1(改为导入的Table)和文件路径

UPDATE #files
SET sql = 'BULK INSERT Table_1 FROM ''' + 'C:\Test\'+name + ''' WITH (' +
'DATAFILETYPE = ''char'', FIELDTERMINATOR = ''\t'', ' +
'ROWTERMINATOR = ''\n'')'

--开始执行导入
DECLARE @sql varchar(8000)

DECLARE cur CURSOR STATIC LOCAL FOR
SELECT sql FROM #files

OPEN cur

WHILE 1 = 1
BEGIN
FETCH cur INTO @sql
IF @@fetch_status <> 0
BREAK

EXEC(@sql)
END

DEALLOCATE cur

主要分为读取文件夹下所有文件和导入文件内容两部分
--读取文件夹下所有文件
declare @files table (ID int IDENTITY, FileName varchar(100))
insert into @files execute xp_cmdshell 'dir c:\test /b'
select 'c:\'+ [FileName] AS FILEPATH INTO #temp from @files
SELECT * FROM #temp
--导入文件内容
BULK INSERT dbo.Table_1
FROM #temp
WITH
(
ROWTERMINATOR ='\n'
)

还需要开启
/***** Step 1 开启 xp_cmdshell
Use Master
GO
EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
GO
*******/
参考:
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/47c8edc1-8cad-4a24-a09a-3fc0c943325c/bulk-insert-multiple-files-tsql
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
余多多315
2019-05-24
知道答主
回答量:5
采纳率:0%
帮助的人:3462
展开全部
同问同问~~想通过sql语句的方式把txt文件导入到数据库对应的表中,请问解决了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奔放又欢快的宝贝
2014-02-18
知道答主
回答量:11
采纳率:0%
帮助的人:2.7万
展开全部
具体是要导入txt文件名还是文件内容,说详细点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love网店专员
2014-02-18 · TA获得超过357个赞
知道小有建树答主
回答量:775
采纳率:84%
帮助的人:120万
展开全部
所有txt文件导入到数据库?不知道什么什么内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式