请教【高效】更新批量数据方案

artwl_cn 2011-05-24 02:17:18
需求是这样的,要把一批数据(EXCEL中)导入数据库(约1万条),每一条数据是由几个表的字段组成的,示例如下:
表A
ID A1 A2
表B
ID B1 B2 B3 B4 AID(外键)
现在要导入的数据格式为
A1 A2 B1 B2 B3 B4

请问有没有比较高效的解决方案(用循环,一条一条插入的方法就不要回了),谢谢!
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2011-05-24
  • 打赏
  • 举报
回复
把你的两张表连接一个DataTable 然后
public void OutPutExcel()
{
//定义文档类型、字符编码
Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";
//下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开
   //filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc    .xls    .txt   .htm
   Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
   //Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档
   Response.ContentType = "application/ms-excel";
   this.EnableViewState = false;
// 定义一个输入流
   System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
   System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

this.RenderControl(oHtmlTextWriter);
   //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
   Response.Write(oStringWriter.ToString());
   Response.End();
}
jcl007_ 2011-05-24
  • 打赏
  • 举报
回复
用dts很快,可手动也可编程
ycproc 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 syeerzy 的回复:]

又不是1000万,1万而已, 循环就循环呗, 装什么装呢... 而且这也不是个高数据的场合(别说万一下次是1000万呢..因为xls文件存储结构决定当张工作表的数据行数不能超过65535, 所以你最多也就是6万多条,在你想破脑袋怎么不循环的时候,那个循环的方法早导完多少张表去了...)

如果你有成千上万的excel文件需要导入, 那更合理的方式是建个宏, 自动把所有ex……
[/Quote]

说完了
建议LZ 不要眼高手低
syeerzy 2011-05-24
  • 打赏
  • 举报
回复
又不是1000万,1万而已, 循环就循环呗, 装什么装呢... 而且这也不是个高数据的场合(别说万一下次是1000万呢..因为xls文件存储结构决定当张工作表的数据行数不能超过65535, 所以你最多也就是6万多条,在你想破脑袋怎么不循环的时候,那个循环的方法早导完多少张表去了...)






如果你有成千上万的excel文件需要导入, 那更合理的方式是建个宏, 自动把所有excel文件另存为csv的文本格式, 如果有需要的话,用一个支持批量正则替换的文本编辑器,对这些文件做批量格式化, (例子这么简单应该就不需要了) 然后自己写个BCP的xml配置来对应你的表结构(关于BCP,是SqlServer带的命令行工具,自己查看SqlServer的帮助),然后通过bcp命令来导入.
artwl_cn 2011-05-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 laowang134 的回复:]

是直接导入还在从程序导入?
[/Quote]
提供导入数据页面,由有权限的用户导入
laowang134 2011-05-24
  • 打赏
  • 举报
回复
是直接导入还在从程序导入?
丰云 2011-05-24
  • 打赏
  • 举报
回复
没有好方法,
你的记录里有多个表的数据,
必须要用程序逐条分割,
至于是否逐条插入那随便你.

可以肯定是没有一次性的导入方法

如果是单表数据,
倒是可以用BCP导入.....
风骑士之怒 2011-05-24
  • 打赏
  • 举报
回复
坐等 不涉及循环遍历的 高级办法...

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧