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. 编译器的优化可能把某些语 ...
随机推荐
- [物理学与PDEs]第4章第2节 反应流体力学方程组 2.3 混合气体状态方程
1. 记号与假设 (1) 已燃气体的化学能为 $0$. (2) 单位质量的未燃气体的化学能为 $g_0>0$. 2. 对多方气体 (理想气体当 $T$ 不高时可近似认为), $$\bex ...
- 使用SO_REVTIMEO套接字选项为recvfrom设置超时
void dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen) { int n; ]; struct timeval ...
- 使用SIGALARM为connect设置超时
static void connect_alarm(int); int connect_timeo(int sockfd, const SA *saptr, socklen_t salen, int ...
- H5——while循环,for循环
[循环结构的步骤] * ① 声明循环变量 * ② 判断循环条件 * ③ 执行循环体(while的{}中的所有代码) * ④ 更改循环变量 * 然后执行② ③ ④ var n=1; // ① 声明循 ...
- Contest2156 - 2019-3-7 高一noip基础知识点 测试2 题解版
传送门 预计得分:100+70+100+50=320 实际得分100+63+77+30=270 Ctrl_C+Ctrl_V时不要粘贴翻译的,直接粘原文, In a single line of the ...
- 新手入门django本地化服务
自动化安装 #更新依赖库 pip install --upgrade setuptools #安装指定的版本 pip install Django==2.0.4 文 ...
- pyhton之Reportlab模块
reportlab模块是用python语言生成pdf文件的模块 安装:pip install reportlab 模块默认不支持中文,如果使用中文需要注册 1.注册中文字体 下载自己需要的.ttf字体 ...
- asyncio协议
服务端 import asyncio import logging import sys from typing import Optional SERVER_ADDRESS = ('localhos ...
- TCP-IP详解笔记6
TCP-IP详解笔记6 用户数据报协议和IP分片 UDP是一种保留消息边界的面向数据报的传输层协议. 不提供差错纠正, 队列管理, 重复消除, 流量控制和拥塞控制. 提供差错检测, 端到端(end-t ...
- 帆软报表(finereport)单元格中各颜色标识的含义
帆软报表(finereport)单元格中,可根据单元格角标的颜色判断单元格进行的操作 过滤:单元格左下角黄色三角形 条件属性:单元格左上角红色三角形. 控件:单元格右侧中间的各种矩形. 左父格:单 ...