电竞

求sql导入语句

2019-12-04 18:08:30来源:励志吧0次阅读

求sql导入语句

我有500多个csv文件,想导入SQL数据库内,数据库字段与文件字段是一样的,

如何写批量导入语句。

用动态sql

--以下是别人写的,

--第一步,先获取某一个文件夹下的所有txt 文件

create table tmp_filelist (cdrfile varchar(64))

go

exec master.dbo.xp_cmdshell "dir D:data.db4006400. <YYYYMM>*.txt /s/b > D:data.db4006400. <YYYYMM>list"

-- -s:表示该文件夹下所有文本文件,包括子文件夹

-- -b:当前文件夹所有文本文件

-- >:表示把当前文件列表存入指定的文件中

go

bulk insert tmp_filelist from N"D:data.db4006400. <YYYYMM>list"

--用药bulk insert 命令把文件列表的文件名存入 数据表中

go

--第二步,利用游标把每一文件导入数据库中

--他这里是用bulk insert ,也可以用

--select * from opendatasource("microsoft.jet.oledb.4.0","text;hdr=no;database=路径")...[文件名#txt]

truncate table tmp_cdr4006csv

declare @cdrfile varchar(64)

declare @sql nvarchar(256)

declare @cmd varchar(512)

declare cur_fl cursor for select * from tmp_filelist

open cur_fl

fetch next from cur_fl into @cdrfile

while @@fetch_status!=-1 begin

set @sql ="BULK INSERT tmp_cdr4006csv FROM N"""+@cdrfile+""" WITH ( FIELDTERMINATOR = "","")" exec sp_executesql @sql

fetch next from cur_fl into @cdrfile

end

close cur_fl

deallocate cur_fl

declare @count int,@path varchar(200),@tb varchar(100),@cmd nvarchar(4000)

set @count =500

set @path="D:abc"--a100.csv

set @count=1

whiel @count <=600

begin

set @cmd="bcp "+@path + "a"+cast(@count as varchar)+".csv in "+@tb+" -c -t, -T"

exec master.dbo.xp_cmdshell @cmd

set @count=@count=1

end

SQL codeif exists(select 1 from sysobjects where name="file2table" and objectproperty(id,"isprocedure")=1)

drop procedure file2table

go

create procedure file2table

@servername varchar(200) --服务器名称

,@username varchar(200) --用户名,如果用nt验证方式,则为空""

,@password varchar(200) --密码

,@tbname varchar(500) --数据库

,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt

,@isout bit --1为导出,0为导入

as

declare @sql varchar(8000)

------如果@tbname参数为ksoa类型,则默认导出整个数据库中的数据,如果@tbname参数为ksoa..spkfk则默认导出某个表的数据

begin --导出整个数据库,定义游标,取出所有的用户表

declare @m_tbname varchar(250)

if right(@filename,1)<>"" set @filename=@filename+""--如果不是文件夹根目录,设置为根目录

set @m_tbname="declare #tb cursor for select name from "+@tbname+".dbo.sysobjects where xtype=""u""

and (name not like ""wms_%"" and name not like ""HR_%"" and name not like ""tmp_%"")"

exec(@m_tbname)

open #tb

fetch next from #tb into @m_tbname

while @@fetch_status=0

begin

set @sql="bcp "+@tbname+"."+"dbo."+@m_tbname+case when @isout=1 then " out " else " in " end

+ @filename+@m_tbname+".csv -w" -- 注意

+" /S "+@servername +case when isnull(@username,"")="" then "" else " /U "+@username end

+" /P "+isnull(@password,"")

exec master.dbo.xp_cmdshell @sql

fetch next from #tb into @m_tbname

end

close #tb

deallocate #tb

end

go

宝宝爱出汗是什么原因
儿童口臭是什么原因
宝宝咳嗽厉害怎么办
宝宝烧到39度怎么办
分享到: