SSIS获得Excel行号(转自http://blog.csdn.net/zplume/article/details/19113911)
问题描述: 首先个人并不推荐将Excel作为数据源,因为Excel单元格式会引起特别多的数据转换问题,例如:单元格里明明是2.89,但SSIS抽取到数据库里面之后却变成了2.88999999之类的数据。 这里要介绍的是假如万不得已需要用Excel作为数据源时,经常会需要取得Excel每一行的行号,当然假如允许可以在Excel里面新增加一列并赋予公式=Row()。但很多情况是源文件并不允许被轻易改动。那么,如何获得数据的行号,以方便今后漫长的岁月中,support同事们进行错误追踪呢?
环境:SQL SERVER 2008,SSIS 2008, Office 2003
解决思路:
因为Excel 2003中的数据最大只有65535行数据,因此在SSIS里面的new output里面加一列名为RowNo, 并增加一个自增变量, 每一次抽取一行数据的时候就将该字增变量赋给RowNo。 之前想到这个方式的时候我很担心SSIS并不是顺序读取Excel里面的每一行数据,也可能是随机读取Excel里面的数据直到读完。后来有同学说,反正只有65535行数据,测试一下先造一个65535行的数据样本,用Excel去抽取,看看是不是每一行都是顺序读取的,假如这65535都是顺序读取的。那测试就通过了。
解决方法:
在Data Flow里面加入Excel Source后面紧接着放一个Script控件,为该Script控件新建一个Output Column名为: SeqNo. 点击Edit Script进去后,设置一个全局私有变量:
private int _RowNumber = 2;
在Input0_ProcessInputRow(Input0Buffer Row)方法里面设置:
Row.DataLineNumber = _RowNumber;
Row.SeqNo = Variables.SeqNo;
_RowNumber++
结论:
SSIS在读取Excel数据的时候确实是顺序读取的,上面在Script中新建的SeqNo列值和测试的Excel数据样本里面的某一列被赋予=Row()的列值完全相同。
SSIS获得Excel行号(转自http://blog.csdn.net/zplume/article/details/19113911)的更多相关文章
- vim显示行号、语法高亮、自动缩进的设置
转载自:http://blog.csdn.net/chuanj1985/article/details/6873830 在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为v ...
- vs2010设置 "行号显示"
Microsoft Visual Studio 2010 默认情况下是不显示代码的行号的.在编译出错时,可点击下面输出窗口中的错误提示进行定位. 但是这样操作起来你有没有感觉到不方便呢. 不显示行号时 ...
- 【转】DataGridView显示行号
ref:http://blog.csdn.net/xieyufei/article/details/9769631 方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件 ...
- MYSQL行号
mysql 实现行号的方法——如何获取当前记录所在行号 - senly - 博客园http://www.cnblogs.com/xinlei/archive/2011/12/16/2290349.ht ...
- log4j日志文件名与行号显示乱码? 问号? 参数问号? 日志问号?【转】【补】
log4j本来设置了要打印行号与文件名的,结果有的能打印出来,有的却是乱码,查了些文档之后才发现,原来打印问题是因为编绎时没有编绎进去调试信息,所以没办法打印,好像有的系统又会显示(Unknown S ...
- 更适合程序员使用的Vim配置 显示行号 语法高亮 智能缩进
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc.在启动vim时,当前用户根 ...
- C/C++ 打印文件名、行号、函数名的方法
转自:http://zhidao.baidu.com/link?url=JLCaxBAXLJVcx_8jsyJVF92E_bZjo4ONJ5Ab-HGlNBc1dfzcAyFAIygwP1qr18aa ...
- centos7 vim显示行号
CentOS7下可能有n个账户,让vim显示行号有两种方法:仅让当前用户显示行号和让所有用户显示行号 一.仅让当前用户显示行号 输入命令:vim ~/.vimrc 写入:set nu 保存:wq ...
- gdb调试行号错位
http://blog.csdn.net/wangxmin2005/article/details/8128192 gdb调试过程中出现行号错位的情况,原因一般有两个: 1. 编译器的优化可能把某些语 ...
随机推荐
- Webform——JQuery基础(选择器、事件、DOM操作)
一.选择器 1.基本选择器 ①id选择器:# ②class选择器:. ③标签名选择:标签名 ④并列选择:用,隔开 ⑤后代选择:用空格隔开 代码用法展示: ...
- 代码,python1
def main(): try: number1,number2=eval(input("please enter two number")) result=number1/num ...
- ng-app&data-ng-app
来源stackoverflow 区别:在验证html5时,ng-app会抛出一个错误,而对带data-前缀的特性不会抛出.其它方面这两个属性一样.
- LeetCode前100题(EASY难度)
1 Two Sum Given an array of integers, return indices of the two numbers such that they add up to a s ...
- (三)Java工程化--Git起步
GIT学习参考:https://git-scm.com/book/zh/v2 版本控制 版本控制记录了一个或若干文件的历史变化,便于今后查阅,恢复. 三类版本控制系统 本地版本控制系统 RCS : 本 ...
- 墨水屏 E-Paper module【转】
转自:https://blog.csdn.net/smallmount123/article/details/77489196 https://www.digikey.com/product-deta ...
- 【原创】大数据基础之HDFS(1)HDFS新创建文件如何分配Datanode
HDFS中的File由Block组成,一个File包含一个或多个Block,当创建File时会创建一个Block,然后根据配置的副本数量(默认是3)申请3个Datanode来存放这个Block: 通过 ...
- linux日志过滤某时间段的日志
sed -n '/2019-01-10 16:00*/,/2019-01-10 18:48*/p' nohup.out > 111.log
- JS高德地图计算两地之间的实际距离
这个是通过导航的方式来获取两地之间的实际距离,和消耗的时间(key值自己去申请哈) <!doctype html> <html> <head> <meta c ...
- 七天开发进度(七)(微信小程序版(二)记账本)
终于把小程序版弄完了,不过这并不能称之为是我的作品,因为我还没有彻底学会小程序,对JavaScript语言还有很多不会的地方,没有掌握, 这次的程序是通过学习网上的多个教程,多个案例结合拼凑模仿者人家 ...