首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

dataset导入数据库解决方案

2011-12-29 
dataset导入数据库我现在从excel中抓取数据并绑定到dataset中,请问我现在怎么把dataset中的数据批量的插入

dataset导入数据库
我现在从excel中抓取数据并绑定到dataset中,请问我现在怎么把dataset中的数据批量的插入到数据库中的表中呢?
还请各位赐教,谢了先...

请看好了,是插入新表

[解决办法]
遍历ds的没一数据行,
再一行一行的insert到表中

for each(DataRow dr in ds)
{
string sql = “insert into table1 values (” + “‘” + dr[“字段名1”]+”’,‘“ + dr[“字段名2”]+.................
InsertIntoTable(sql)
}

private void InsertIntoTable(string sql)
{
'执行插入数据库表的函数。
}
[解决办法]
学习了。
[解决办法]
用sql语句可以实现,create一个表,再按楼上的方法一行行插进去就可以了
[解决办法]

探讨
晕,我要的是整个dataset提交,不是一个一个的insert,谢谢

[解决办法]
直接到入就行了啊

sql server 好像导入数据要用第三方工具

oracle 可以直接导的吧
[解决办法]
实现目的:往oracle数据库中,插入excel文件中的数据 

实现步骤: 

1、打开MicroSoft Excel 2000 

2、文件(F)→新建(N)→工作簿→ 

3、输入数据后,存盘为test.xls, 

4、文件(F)→另存为(A)→ 

保存类型为:制表符分隔,起名为text.txt,保存到C:\ 

5、须先创建表结构: 

连入SQL*Plus,以system/manager用户登录, 

SQL> conn system/manager 

创建表结构 SQL> create table test 



id number,--序号 

usernamevarchar2(10), --用户名 

passwordvarchar2(10), --密码 

sj varchar2(20)  --建立日期 

); 
 


6、创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑: 

控制文件:input.ctl,内容如下: 

load data --1、控制文件标识 

infile 'test.txt' --2、要输入的数据文件名为test.txt 

append into table test--3、向表test中追加记录 

fields terminated by X'09'--4、字段终止于X'09',是一个制表符(TAB) 

(id,username,password,sj) -----定义列对应顺序 

a、insert,为缺省方式,在数据装载开始时要求表为空 

b、append,在表中追加新记录 

c、replace,删除旧记录,替换成新装载的记录 

d、truncate,同上 

7、在DOS窗口下使用SQL*Loader命令实现数据的输入 

C:\>sqlldr userid=system/manager control=input.ctl 

默认日志文件名为:input.log 

默认坏记录文件为:input.bad 

如果是远程对数据库进行导入操作,则输入字符串应改为: 

C:\>sqlldr userid=system/manager@serviceName_192.168.1.248 control=input.ctl 

8、连接到SQL*Plus中,查看是否成功输入,可比较input.log与原test.xls文件,查看数据是否全部导入,是否导入成功. 

[解决办法]
没做过这个,但想到一个思路,楼主可以试试是否可行,效率如何

1.先执行建表语句
2.使用适配器得到一个该表的目标dataset
3.将你的源dataset合并到那个目标dataset里去
4.目标dataset.AcceptChange()
[解决办法]
首先 你需要在数据库当中创建一个相同结构的数据表,然后再程序当中,获得该程序表的dataset和dataadapter
然后 给dataadapter创建更新语句,然后使用dataset.marge方法合并两个dataset然后使用dataaadpter的update方法应该就可以了
[解决办法]
那只是外表,里面真正运行的还一条一条进去插的,你自己想想就知道了,人家插入数据库数据时,还不是一条的进去。
[解决办法]
批量处理 也是 一条一条 来插入的

[解决办法]
up
[解决办法]

直接调用 sql server bcp工具
直接把excel数据批量导入到数据库对应的表中了

[解决办法]


sql有自带的数据导入功能。那个就支持Excel。
[解决办法]
UpdateDataset(datasset,new string[] {this.H_TableName ,this.D_TableName},DataCon.conString);

public static void UpdateDataset(SqlCommand insertCommand, SqlCommand deleteCommand, SqlCommand updateCommand, DataSet dataSet, string tableName)
{
if( insertCommand == null ) throw new ArgumentNullException( "insertCommand" );
if( deleteCommand == null ) throw new ArgumentNullException( "deleteCommand" );
if( updateCommand == null ) throw new ArgumentNullException( "updateCommand" );
if( tableName == null || tableName.Length == 0 ) throw new ArgumentNullException( "tableName" ); 

// Create a SqlDataAdapter, and dispose of it after we are done
using (SqlDataAdapter dataAdapter = new SqlDataAdapter())
{
// Set the data adapter commands
dataAdapter.UpdateCommand = updateCommand;
dataAdapter.InsertCommand = insertCommand;
dataAdapter.DeleteCommand = deleteCommand;

// Update the dataset changes in the data source
dataAdapter.Update (dataSet, tableName); 

// Commit all the changes made to the DataSet
dataSet.AcceptChanges();
}
}


[解决办法]

探讨
引用:
那只是外表,里面真正运行的还一条一条进去插的,你自己想想就知道了,人家插入数据库数据时,还不是一条的进去。
你说的是必然的,但是人家是底层插入,效率肯定比你一条一条插效率高多了,如果你往数据库插5万条数据,每条数据有 50多个字段,其中有10多个是大文本字段,并且字数在2000左右,甚至更高,你再试试

[解决办法]
探讨
没做过这个,但想到一个思路,楼主可以试试是否可行,效率如何

1.先执行建表语句
2.使用适配器得到一个该表的目标dataset
3.将你的源dataset合并到那个目标dataset里去
4.目标dataset.AcceptChange()

[解决办法]
老大们,费那么多事干嘛,直接使用不就可以了,不论怎样的操作方式,在大数据量处理的时候,数据的底层操作不是你我可以控制的,我们所能操作的只是用那个更简便而以

热点排行