C#.net里如何实现数据批量传入SQL数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#.net里如何实现数据批量传入SQL数据库相关的知识,希望对你有一定的参考价值。

用bulkinsert导入一个文件夹下的所有指定条件的文件
(实现批量上传)
在某个文件夹下有很多文件,要将该文件夹下的
snd*.txt
文件,插入
snd_info

rcv*.txt
文件,插入
rcv_info

其他
.txt
文件和其他类型的文件不处理
--示例处理过程
--处理参数
declare
@path
nvarchar(266)
set
@path='c:\'
--要导入的文件所在的目录
--导入处理
--得到该目录下的所有文件
if
right(@path,1)<>'\'
set
@path=@path+'\'
create
table
#t(fn
nvarchar(1000),depth
int,isfile
int)
insert
#t
exec
master..xp_dirtree
@path=@path,@depth=1,@file=1
--定义游标,逐个导入文件
declare
@s
varchar(8000)
declare
tb
cursor
local
for
select
'bulk
insert
'
+case
when
fn
like
'snd%.txt'
then
'snd_info
from
'''+@path+fn
+'''
with
(formatfile='''+@path+'snd_bcp.txt'
else
'rcv_info
from
'''+@path+fn
+'''
with
(formatfile='''+@path+'rcv_bcp.txt'
end+''')'
from
#t
where
isfile=1
and
fn
not
in('snd_bcp.txt','rcv_bcp.txt')
and
(fn
like
'snd%.txt'
or
fn
like
'rcv%.txt')
open
tb
fetch
tb
into
@s
while
@@fetch_status=0
begin
exec(@s)
fetch
tb
into
@s
end
close
tb
deallocate
tb
drop
table
#t
参考技术A 难得在这个版块看到这么专业的问题,我也刚学一段时间,也不很清楚,但感觉你说的c#.net里批量传入数据库,到底批量是以什么形式显示的,winform窗体程序?还是XML页面呀,winform的话好像不存在批量的情况啊,就涉及到更新数据库吧,只有逐个添加咯
倒是XML大量数据形式比较常见,直接用创建存储过程:
导入
xml 文件
DECLARE
@idoc
int
DECLARE
@doc
varchar(1000)
--sample
XML
document
SET
@doc
='
<root>
<Customer
cid=
"C1"
name="Janine"
city="Issaquah">
<Order
oid="O1"
date="1/20/1996"
amount="3.5"
/>
<Order
oid="O2"
date="4/30/1997"
amount="13.4">Customer
was
very
satisfied
</Order>
</Customer>
<Customer
cid="C2"
name="Ursula"
city="Oelde"
>
<Order
oid="O3"
date="7/14/1999"
amount="100"
note="Wrap
it
blue
white
red">
<Urgency>Important</Urgency>
Happy
Customer.
</Order>
<Order
oid="O4"
date="1/20/1996"
amount="10000"/>
</Customer>
</root>
'
--
Create
an
internal
representation
of
the
XML
document.
EXEC
sp_xml_preparedocument
@idoc
OUTPUT,
@doc
--
Execute
a
SELECT
statement
using
OPENXML
rowset
provider.
SELECT
*
FROM
OPENXML
(@idoc,
'/root/Customer/Order',
1)
WITH
(oid
char(5),
amount
float,
comment
ntext
'text()')
EXEC
sp_xml_removedocument
@idoc

SQLite数据库如何批量插入数据?

解决方法:
添加事务处理,把5000条插入作为一个事务
dataBase.beginTransaction(); //手动设置开始事务
//数据插入操作循环
dataBase.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交
dataBase.endTransaction(); //处理完成

将数据库「倒出来」:
sqlite3 film.db ".dump" > output.sql
利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库
备份了):
sqlite3 film.db < output.sql
在大量插入资料时,你可能会需要先打这个指令:
begin;
插入完资料后要记得打这个指令,资料才会写进数据库中:
commit;
参考技术A 具体的操作步骤如下:首先,用Access打开mdb文件。导出成txt文件,由于本人的SQLite是在linux下使用,所以编码要改成Unicode,分隔符用逗号分割(逗号分割是为了后期导入到SQLite中)第二步,将文件导入到linux系统下通过终端sqlite3abc.dbSQLiteversion3.6.22Enter".help"forinstructionsEnterSQLstatementsterminatedwitha";"sqlite进入一个已经建好的数据库中sqliteCREATETABLEeee(idINTEGERPRIMARYKEY,numberNUMERIC,codeNUMERIC,cityTEXT,citytypeTEXT);创建一个表,这个表的字段和数据类型要和txt文件中的数据和数据类型相对应。sqlite.separator","//设置分割符为逗号,和之前导出设置的分隔符保持一致sqlite.importlist.txteee//将list.txt上的内容导入到表eee中到此,已成功地将批量数据插入到SQLite中了。本回答被提问者采纳

以上是关于C#.net里如何实现数据批量传入SQL数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .NET 执行多个 Oracle SQL 语句

学习笔记sql server数据库批量查询和删除内容执行语句

批量加入-拼接sql字符串

C#ADO.NET怎样才能与SQL数据库连接?

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

请问SQL如何实现批量查询