社区
C#
帖子详情
在子表DataTable中添加一列,让该列的值为父表对应的字段有什么好办法(foreach子表怕效率不高)
sheyouyou1
2008-11-13 01:03:23
因为子表 父表都加载到程序中了 不想在子表中外连接父表字段,这样白白增加网络负担。所以想在DataSet里面处理。
遍历速度明显有点慢,数据库在本机时比外连接查询慢。不知道LinQ能不能对两个DataTable生成类似视图的东西,对该视图的操作能反映到DataTable上。LINQ没学过,请前辈指点下
...全文
87
3
打赏
收藏
在子表DataTable中添加一列,让该列的值为父表对应的字段有什么好办法(foreach子表怕效率不高)
因为子表 父表都加载到程序中了 不想在子表中外连接父表字段,这样白白增加网络负担。所以想在DataSet里面处理。 遍历速度明显有点慢,数据库在本机时比外连接查询慢。不知道LinQ能不能对两个DataTable生成类似视图的东西,对该视图的操作能反映到DataTable上。LINQ没学过,请前辈指点下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qxf1547
2008-11-16
打赏
举报
回复
虽然不知道,帮你顶一下
sheyouyou1
2008-11-16
打赏
举报
回复
已解决 用Expression
pvgyetg
2008-11-13
打赏
举报
回复
友情UP
excel导入sql2005的几种方法归纳
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳 数据库 2010-07-27 11:14:26 阅读201 评论0 字号:大
中
小 订阅 近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件
中
的,我必须将其导入SQL Server2005
中
,供存储过程计算。 由于之前没有将Excel数据导入SQL Server2005的经验,因此摸索着花了一天时间才搞定。下面将网上收集到的几种导入方法做个归纳。 方法一、利用SQL Server2005自带的DTS工具,手工导入: 第一步是点击开始并选择运行并输入CMD然后在命令提示符里输入DTSWIZARD。SQL Server 导入和导出向导的欢迎界面将显示出来,如下图所示:(也可以这样打开该界面:1、登录到 SQL Server Management Studio。2、在 “对象资源管理器 ”
中
右键单击 “管理 ”,在弹出
列
表
中
单击 “导入数据 ”。) 当你点击下一步按钮时,它将进入选择数据源向导界面。用户应该选择数据源为Microsoft Office 12.0 Access Database Engine OLE DB Provider 然后在向导界面
中
点击属性…按钮,它将弹出数据链接属性界面。在所有标签页
中
,双击数据源属性
值
并输入电子数据表的位置,例如“C:\Excel2007\Import\SampleData.xlsx”作为导入数据的数据源的Microsoft Office Excel 2007文件名称和路径。然后双击扩展属性并选择Excel 12.0作为属性
值
。 到Microsoft Office Excel 2007的连接可以通过点击测试连接按钮来进行测试,如下图所示: 在下一个页面
中
,数据源需要选为SQL Native Client,因为数据将导入到SQL Server 2005。然后你需要选择数据所要导入的服务器名称,并需要配置合适的验证模式,它之后跟着数据库名称。 在这个例子
中
,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。 在Specify Table Copy or Query(指定表复制或查询)向导界面
中
,选择copy data from one or more tables or views(从一个或多个表或视图复制数据)选项,并继续这个向导到下一个界面。 在Select Source Table and Views(选择源表和视图)向导界面
中
,用户需要在源
中
选择雇员电子数据表,然后在目标
中
就可以看到ImportExcel.dbo.Employee了。之后点击Edit Mappings…(编辑匹配…),扫描电子数据表
中
的可用数据,如果数据类型与SQL Server所建议的不同的话那么指定数据类型。 在Save and Execute Package(保存和执行包)向导界面
中
,有两个选项叫做Execute Immediately(立即执行)和Save SSIS Package as file system(保存SSIS包为文件系统)。你可以选择任何一个选项然后点击Finish(完成)按钮来运行和结束这个包配置。 方法二、在查询分析器里,直接写 SQL语句: 1、如果是导入数据到现有表,则采用 INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 的形式 2、如果是导入数据并新增表,则采用 SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 的形式。 以上语句是将 EXCEL文件里 SHEET1工作表
中
所有的
列
都读进来,如果只想导部分
列
,可以 INSERT INTO 表 (a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 其实可以将 OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)当成一个表,例如我就写过这样一个句子: INSERT INTO eval_channel_employee(channel,employee_id) SELECT CASE a.渠道 WHEN 'DIY' THEN 1 WHEN 'RDC' THEN 0 WHEN 'KCM' THEN 2 ELSE 3 END ,b.id FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\temp\name.xls',sheet1$) AS a,pers_employee b WHERE a.员工编码 =b.code 不管是哪种方式,哪种途径,系统都会默认将第一行上的内容作为
字段
名。 3、利用C#自己开发数据导入小工具 //连接串 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + [EXCEL文件,含路径] + ";"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open();
DataTable
dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"}); DataSet ds = new DataSet(); //一个EXCEL文件可能有多个工作表,遍历之
foreach
( DataRow dr in dtSchema.Rows ) { string table = dr["TABLE_NAME"].ToString(); string strExcel = "SELECT * FROM [" + table + "]"; ds.Tables.Add(table); OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel,conn); myCommand.Fill(ds,table); } conn.Close(); 这样,读取出来的数据就藏在 DataSet里了。 采用这种方式,数据库所在机器不必装有 EXCEL。 总结: 当Excel表
中
数据完整时,利用SQL自带的导入工具手工导入比较方便。当数据不完整或数据格式
对应
不上时,使用导入工具会出错,利用SQL查询语句就更便捷。当结合以上两种方法的优点,利用C#自己开发出数据导入工具是最佳选择。
C#多个
DataTable
根据某
一
列
匹配,其余
字段
相加求和的高效算法。
接到一个需求,在数据环境
中
,需要做出按1-12,可以选择 今年与去年两年 任意月度的数据进行对比。但是,这些数据又不存在于数据库
中
,不能直接求和、原数据 就在
datatable
中
保存。所以就需要有多个
DataTable
相加的
办法
。但是,用
datatable
一个个循环加,
效率
不可恭维。绞尽脑汁想出一个
办法
,整个循环一次,就将最终的Table取出。 具体功能效果、大致如下 根据ID匹配 ID相同...
PowerBI系
列
之DAX函数专题
本课程是PowerBI系
列
课程之DAX函数专题讲解,包含以下内容 1. DAX函数基础知识什么是DAX函数数学函数:ABS、DIVIDE、MOD、RAND、ROUND、FIXED等日期和时间函数: CALENDAR、CALENDARAUTO、MONTH、YEAR、DATE、DT等信息函数:USERNAME、USERPRINCIPALNAME、HASONEFILTER、HASONEVALUE、ISFILTERED、ISCROSSFILTERED、ISINSCOPE、ISBLANK、SELECTEDMEASURE、SELECTEDMEASURENAME等逻辑函数:AND、OR、IF、IFERROR、SWITCH、TRUE、FALSE、COALESCE(官方文档含糊不清-结合实例)等关系函数:CROSSFILTER、RELATED、RELATEDTABLE等筛选器函数:FILTER、CALCULATE、ALL、ALLEXCEPT、ALLSELECTED、EARLIER、KEEPFILTERS、REMOVEFILTERS、SELECTEDVALUE、LOOKUPVALUE等父子函数:PATH、PATHCONTAINS、PATHITEM、PATHLENGTH等统计函数:AVERAGE、COUNT、MAX、MIN、SUM等迭代统计函数:AVERAGEX、COUNTX、MAXX、MINX、SUMX、RANKX等表函数: FILTERS 、ADDCOLUMNS、 SELECTCOLUMNS、 CROSSJOIN、 EXCEPT、 GENERATE、 GROUPBY、 SUMMARIZE、 SUMMARIZECOLUMNS、 TOPN、 TREATAS、 UNION、 VALUES、DISTINCT、
DATATABLE
、NATUALINNERJOIN、NATRUALLEFTOUTERJOIN等文本函数: EXACT、MID、 FIND、 LEN、 REPT、 LOWER、 UPPER、 UNICHAR等时间智能函数:DATEADD、DATESMTD、FIRSTDATE、LASTDATE、SAMEPERIODLASTYEAR等财务函数:2020.7之后发布的,和Excel
中
财务函数相似,网页和demo pbix简单介绍其他函数:BLANK、ERROR、IFERROR等 DAX函数初体验:Max、Sum、Divide、if、Values等
值
函数表函数以及表和
列
的概念DAX函数术语、语法、运算符DAX运算符和引擎
中
字母大小写问题DAX编程注释和快捷键DAX与Excel函数的共同点和区别(PPT)DAX、xmSQL与SQL表达式的区别(PPT)DAX函数的自学途径 2. PowerBI
中
数据建模知识维度建模关系传递和交叉筛选器方向-理解表关系(1v1, 1vM, Mv1,MvM)两个方向上应用安全筛选器关闭关系自动检测新建计算
列
新建度量
值
新建计算表:辅助表(五种方式)、日历表数据类型讲解数据格式控制:%、$、千位分隔符、小数位、日期格式Format函数自定义数据格式Convert函数做数据类型转换解决
中
文数字单位 万 的显示问题Date和DT函数定义固定日期
值
显示和隐藏
列
DAX代码分析器阅读DAX表达式方法:从上至下、由内到外(注意Calculate的计算顺序)调试DAX表达式方法:分布输出或VAR输出3. DAX函数原理 Vertipaq
列
式数据库原理理解度量
值
和计算
列
理解行上下文和筛选上下文:Calculate示意图行上下文
中
使用VAR替代EARLIERVAR变量在定义时的上下文
中
计算VAR变量是采用惰性计算(使用时计算)理解扩展表和RELATED函数理解数据沿袭Lineage 4. 开始感知DAX函数的强大DAX函数实现特殊符号的使用DAX函数实现切片器默认当前月或天DAX函数使切片器默认代表无任何选择DAX函数使切片器仅显示有数据的选项DAX函数使切片器反向筛选和计算DAX函数使切片器之间取并集DAX函数使关系
中
多端的切片器筛选一端的切片器 DAX函数实现年月共同决定数据排序DAX函数实现动态图表标题DAX函数实现动态图表配色和图标DAX函数实现动态纵坐标DAX函数实现动态横坐标5. 理解重点DAX函数重
中
之重FILTER 和 CALCULATE和CALCULATETABLE详解调节器REMOVEFILTERS和ALL、ALLEXCEPT函数调节器ALL、ALLSELECTED和ISINSCOPE占比分析调节器AllSELECTED和KEEPFILTERS的比较调节器USERELATIONSHIP激活关系调节器TREATAS动态建立关系调节器CROSSFILTER改变筛选器方向重点之ISFILTERED和ISCROSSFILTERED重点之HASONEVALUE和ISINSCOPE的区别重点之表函数SELECTEDCOLUMNS和ADDCOLUMNS重点之表函数NATUALINNERJOIN和NATRUALLEFTOUTERJOIN重点之表函数FILTERS和VALUES比较重点之VALUES和DISTINCT的区别重点之分组函数SUMMARIZECOLUMNS详解重点之函数LOOKUPVALUE vs RELATED vs VLOOKUP 重点之集合函数UNION、INTERSECT、EXCEPT重点之集合函数CROSSJOIN和GENERATE 笛卡尔积重点之
值
合并、
列
合并、表合并CONCATENATEX重点之BLANK行产生的原因和BLANK相关函数重点之COALESCE函数处理空重点之FIRSTNOBLANK和FIRSTNOBLANKVALUE函数重点之使用VAR变量表
中
的
列
重点之Error和IfError函数6. 实际案例-日期时间和时间智能相关关键点-日期表和事实表关联问题时间智能-同比环比分析时间智能-累计聚合、滚动聚合、移动平均时间智能-期初期末库存分析日期分析-计算任意所选月份的环比日期分析-周的同比环比和周聚合日期分析-指定月份的同比环比和季度环比日期分析-计算季末或季末月份的数据日期分析-趋势图
中
根据最近月份取TopN日期分析-动态指定某个日期区间分析日期分析-动态任意区间段做数据对比日期分析-实现两个日期
列
的范围筛选日期分析-按工作日计算日期差日期分析-计算最近两次购买日期差日期分析-根据历史数据做销售预测日期时间函数和时间智能函数使用总结7. 实际案例-DAX函数进阶进阶-解决
列
排序对计算的影响进阶-实现切片器筛选之间的OR逻辑进阶-矩阵Matrix
中
高亮显示最大
值
最小
值
进阶-DAX
列
转行 vs 矩阵
列
转行和逆透视进阶-非日期类型的累计聚合进阶-排名逻辑的4种实现-RANKX详解进阶-分组内排名的实现和理解迭代函数进阶-TopN/BottomN和Others的实现进阶-TopN
中
实现动态指标进阶-TopN
中
实现N的动态进阶-分组内动态TopN和Others 进阶-商品折上折-迭代函数SUMX详解 进阶-分析客户购买行为进阶-找出无购买行为的客户进阶-客户购买商品关联度分析 进阶-新客户分析进阶-流失客户分析进阶-回流客户分析进阶-客户购买频次和区间分析进阶-RFM客户价
值
分析进阶-帕累托分析进阶-盈亏平衡分析报表性能优化思路(PPT)
获取
DataTable
中
的某
一
列
及增加一行数据
获取
DataTable
中
的某
一
列
uipath通过
foreach
取
datatable
中
的每行的特定
列
的
字段
row("user").ToString
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章