mysql导入txt栏位分隔符_将txt文件导入sql数据库怎么样用多个分割符

使用场景: 比如将 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

取消

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值