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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用sql语句将一个文件夹下的所有txt文件导入到数据库中急!在线等相关的知识,希望对你有一定的参考价值。

参考技术A 使用场景:
比如将
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
参考技术B 使用场景:
比如将
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

如何用qgis将shp图层导入postgres sql 数据库

使用postgreSQL提供的shp2pgsql.exe功能可以将.shp格式的地理数据转换成sql语句。
shp2pgsql.exe工具在postgreSQL的安装目录下的bin目录中(前提是安装postgreSQL的时候选择了对postgis的支持)
使用方法:
E:\development_tools\postgres-8.4\bin>shp2pgsql -s 4326 F:\tmp\res1_4m.shp citi
y>f:\city.sql
Shapefile type: Point
Postgis type: POINT[2]
例子中用的数据是首都和省级行政中心的数据,所以是“点”类型,
*转换的时候需要指定保存的完整路径,否则会报错。
参考技术A 不知道你用的是QGIS的什么版本,我现在用的2.18.14的版本,是有专门的按钮和工具,将shp导入到postgis的

以上是关于如何用sql语句将一个文件夹下的所有txt文件导入到数据库中急!在线等的主要内容,如果未能解决你的问题,请参考以下文章

如何用qgis将shp图层导入postgres sql 数据库

如何用SQL语句将数据批量插入数据库

如何用一行语句寻找目录下所有包含关键词的文件索引信息

如何用一个批处理bat生成某文件夹和子文件夹下所有文件的绝对路径,分别写入到对应的txt中(一对一生成)

如何用phpmyadmin导入大容量.sql文件

sql server 如何用sql语句实现单个表的备份和还原。