环境:COGNOS 64 10.1.1 WINDOWs 硬件 8CPU 16G内存
背景:COGNOS报表在reportstudio中运行正常,以XLS,XLSX,CSV格式均能正常运行并弹出文件下载提示。
因项目需求,需要将在线等待下载的方式改为离线方式,因此考虑使用后台运行,邮件发送的方式实现。经过试验,发现Excel2007格式运行基本正常,且可以发送带数据附件的邮件,但尝试使用CSV格式附件发送邮件,发生了问题,详述如下:
实验步骤及问题:
1、在线等待方式生成CSV文件,最终可以运行出结果,但是提示下载的文件格式为XLS,且体积远大于正常CSV格式文件(例如正常通过PLSQL导出的CSV为15M,通过COGNOS导出的结果500M)。
2、离线邮件方式发送CSV格式附件(已经控制数据量在10000条以内,字段20个以内),邮件能接收到,也有附件文件,但大小为0,格式正常,是CSV。
3、离线邮件方式发送Excel文件,首先尝试小文件(数据量在10000条以内,字段20个以内),结果一般2-3M,且100%发送成功。尝试大文件(在线等待导出结果50M),接收邮件正常,附件文件存在,但大小为0,格式正常,是XLSX。
针对上述问题进行的分析及困难:
1、在IBM上找到解决方式:http://www-01.ibm.com/support/docview.wss?rs=3631&context=SSQJXN&dc=DB560&dc=DB520&uid=swg21338932&loc=en_US&cs=UTF-8&lang=en&rss=ct3631db2 对于10.1.1版本,应当是需要在服务端进行设置,但按此配置尚未成功。
2、因接收附件大小为零,且考虑到在线方式生成文件成功,因此怀疑是邮件发送环节有问题。因此在Administration中,调整邮件发送配置,首先将邮件附件大小设置为0(即无穷大),然后将文件压缩功能启用(设置邮件附件超过1M即进行压缩),然后用小XLSX文件进行测试,可以接收到zip格式压缩文件,测试成功。但使用CSV文件发送邮件,失败,文件格式CSV,大小为零。(考虑使用CSV格式并加压缩的办法,是因为CSV文件压缩效果比较明显,是为了解决大数据量导出的问题。)此问题尚未找到有效解决办法。
3、Excel文件如果大于文件附件,按照常理考虑,COGNOS应当在执行过程中记录发送邮件失败,但无论怎样结果都显示成功。因此查找IBM的官网文件,说这是正常现象,邮件大小原因造成的附件问题,就是附件大小为零。这种解释个人觉得没有把握。
目的:
请有经验的高手帮忙分析上述问题并建议解决方案。谢谢。
1.如果需求目的是得到csv数据文件,建议用ETL抽取生成csv文件,直接有效
2.如果使用cognos实现,设置schedule,将csv文件生成到server的固定路径下,但不发送邮件,用户通过网络共享到路径下取csv文件
3.附件的大小不仅仅是cognos控制的问题,还有邮件服务器对附件大小的承受度,超过了自然会被删除掉
4.如果Excel2007格式能运行正常,我觉得就没必要用csv了
5.Excel超过一定大小,正常打开会经常崩溃,所以如果得到的数据为了其他用途的话,用ETL生成文本文件会好点
收起[url=/home/space.php?uid=215]sunquan007_2001[/url]非常感谢您的回答。
刚才仔细思考了下,schedule定时生成没什么问题。对于客户每次查询输入的不同条件(现在是靠提示页实现的)的问题似乎没办法解决了。
其实,我们想寻求的解决方案是这样的:
客户通过Portal运行报表--进入提示页输入数据口径--报表开始运行--保存至指定位置--从另外开发的取文件的页面获取文件。
而我们现在没有掌握让COGNOS向指定位置写文件的方法,因此采取了目前的方法:
客户通过Portal运行报表--进入提示页输入数据口径--报表开始运行,等待直到出现通过邮件发送选项(10.1.1版本有这个功能,8.X没有)--客户自行获取邮件及附件。
导出csv生成excel问题:http://www-01.ibm.com/support/docview.wss?uid=swg21586401