通过本地上传工具把CSV文件导入到百会报表
发布时间:2025-12-09 18:05:43
浏览次数:4
百会提供了强大的报表上传工具,提供了在win和linux下面批量上传数据,支持定时传输,以下是实践说明 需求:每天从特定数据库提取数据到百会报表,并在报表中分析数据 环境:LAMP,并且特定数据库数据敏感,不可以直接对接百会报表 分析:根据需求,每天等于批量生成当天数据,等于是按天的增量备份数据 方案: 1,建立一个数据库连接,读取该备份数据库数据 2,通过php文件机制,把读取的数据生成CSV文件 3,生成的文件通过uploadtool上传百会报表 4,在linux建立定时任务,执行生成文件,上传文件任务 以下详细说明 1,在php编写脚本,一个读建立据库连接,一个取数数据并形成array $host = "localhost"; //数据库服务器 $user = "test"; //数据库用户名 $password = " test "; //数据库密码 $db = "user"; //数据库名称
2,连接成功后,读取数据 while($value = mysql_fetch_array($query,MYSQL_ASSOC)){ $result[] = $value; } 然后生成文件 $fp = fopen('file.csv', 'w'); $head_title=array('id','name'); fputcsv($fp,$head_title);//生成报表头, foreach ($param as $line) { fputcsv($fp, $line); } fclose($fp); 3,配置和部署百会报表上传工具,具体说明参考 http://reports.wiki.baihui.com/Upload-Tool.html 这个配置好以后,基本在本机测试环境(windows+wamp+uploadtool)很快就成功了 但是注意,在linux环境下,涉及到代码执行权限,lib目录下面mysql-connector-java-3.0.17-ga-bin版本,以及参数设置,都要细心按照要求填写,确保正确,因为我是增量备份,使用了APPEND方式进行追加数据模式
配置好以后却不能运行,多次报错,提示javasourse找不到,后来把对应的jre目录权限改为可读,依然没有反应,经过仔细分析,是bin下面CSVUploadConsole.sh文件执行时候,必须在后面追加参数,类似
系统会提示文件上载成功,至此,成功曙光出现一半 4,写shell脚本定时执行,第一个是执行php生成文件脚本
但是笔者采用了另外的方式 1)Linux下必须编译安装PHP解释器,在安装完成后,要将安装目录下${PHP}/bin/php 文件复制到 /usr/bin/下,并使用chmod +x ./php 为其添加可执行权限,ok了, 然后在linux命令行下输入:php -q *.php 执行一个php程序,以验证是否解释器工作正常 2)发布php文件:将编写好的php程序发布到apache的发布目录:如:/var/www/html下 加权限:chmod +x /var/www/html/*.php 3)创建定时任务: (-1)启动linux定时服务:service crond start (-2)查看当前定时任务: crontab -l (-3)添加新定时任务:crontab -e 在打开的文件中编辑: */2 * * * * /usr/bin/php -f /var/www/html/*.php 表示每2分钟执行一次/var/www/html/*.php文件 (注: -f 很重要,不能修改成 -q ) 经过测试,php解析器能良好解析我的读库生成文件脚本,并实际生成该文件 最后就是设定上传路径和参数,参考说明3 至此,一个在php中读取的第三方库,经过程序和报表的结合,实现了客户预期 需要示例代码请联系qing.xia@pcstars.com夏生