用sql语句将txt文件导入表中 20
txt文件中数据:2dhkdhaldh17dankanld20dnakdlnal11dakldalkd13anddnld7djadjad。。。表Createtablete...
txt文件中数据:2dhkdhaldh 17dankanld 20dnakdlnal 11dakldalkd
13anddnld 7djadjad 。。。
表
Create table test1
(id int NOT NULL auto-increment ,
col1 char NOT NULL,
col2 int check(col2>=1 and col2<=20),primarykey(id));
求具体操作,如果有解释更好 展开
13anddnld 7djadjad 。。。
表
Create table test1
(id int NOT NULL auto-increment ,
col1 char NOT NULL,
col2 int check(col2>=1 and col2<=20),primarykey(id));
求具体操作,如果有解释更好 展开
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
--定义临时表,用于存放获取的文件名称
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在pl/sql 工具中,有一个文本导入器,这个可以导入的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQLLDR 效率最高..楼主如果会用PB估计就不会问类似问题!!
SQLLDR 使用方法网上一大堆..非常简单实用..
注意导入的文件字符格式要与数据库一致,否则乱码.
SQLLDR 使用方法网上一大堆..非常简单实用..
注意导入的文件字符格式要与数据库一致,否则乱码.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询