设为首页 收藏本站
查看: 980|回复: 0

[经验分享] perl导出CSV

[复制链接]

尚未签到

发表于 2017-5-17 09:05:42 | 显示全部楼层 |阅读模式
在现在互联网的时代,如果有些东西你清楚地,google或者baidu一下,都可以找到一大堆你要的东东,但是相信大家都有这样的经历,找到的东东或者是教程,未必能用用的得心应手,或者是说“怎么文档上这块就顺利通过了,我这里怎么就抱错呀”

    今天花了很长的时间搞了一下利用perl导出CSV文件的过程,挺有感触,在这里给大家分享下

    因为机器装的是RedHat AS4,2.6.9 kernel,perl版本为5.8.5
    在安装开始被提示找不到CSV.pm模块,有点头晕。。通过多方寻找资料得到需要通过ppm下载各种perlpackage,好吧,那么去找找吧,最终找到了ActivePerl-5.8.8.822-i686-linux-glibc-2.2.4-gcc-280952.tar.gz,下载后安装(执行install.sh便可安装)
    安装完成之后就可以通过bin目录下的ppm install (内容)来进行模块安装了,当然你怎么知道需要安装些什么呢?我们可以通过./ppm s CSV,我们通常可以看到如下内容:
Downloading ActiveState Package Repository packlist...not modified
1: App-CCSV v0.02
2: Class-CSV v1.03
3: DBD-CSV v0.22
4: Data-Package-CSV v1.01
5: IO-CSVHeaderFile v0.04
6: Log-Accounting-CSV v0.02
7: POE-Filter-CSV v1.14
8: POE-Filter-CSV_XS v1.12
9: Parse-CSV v1.00
10: Snail-CSV v0.07
11: Template-Plugin-CSV v0.04
12: Text-CSV v1.10
13: Text-CSV-BulkData v0.06
14: Text-CSV-DetectSeparator v0.03
15: Text-CSV-Encoded v0.07
16: Text-CSV-Separator v0.20
17: Text-CSV-Simple v1.00
18: Text-CSV-Track v0.8
19: Text-CSV-Unicode v0.111
20: Text-CSV_PP-Iterator v1.00
21: Text-CSV_XS v0.58
22: Text-ECSV v0.01
23: Text-LooseCSV v1.6
24: Tie-File-AnyData-MultiRecord_CSV v0.01
25: Tie-Handle-CSV v0.09
26: XML-CSV v0.15
27: XML-SAXDriver-CSV v0.07
28: csv2txt v2.0

    当然我们可以安装自己需要的,比如./ppm install Text-CSV DSC0000.gif
    在这里我遇到一个问题,因为我做的内容是需要将oracle的数据导到CSV中,但是在ppm中我无法找到DBD:oracle模块,所以我只能手工安装DBD:oracle模块包,包名如下(DBD-Oracle-1.22.tar.gz),然后通过ppm更新后的pm报和其他需要的文件拷贝到/usr/lib/perl5相关目录下,后来想想,这也是一个通用的办法,也就是把ppm当成一个下载库,呵呵

    好了,最终完成了工作,但是还不太完美,实现代码段如下所示,可供大家参考:
#!/usr/bin/perl -w
use DBI;
use Tie::File;

#$dbh = DBI->connect("dbi:Oracle:$dbname",$user,$passwd) or die "can't connect todatabase ".DBI-errstr;

# Connect to target DB
my $dbh = DBI->connect("dbi:Oracle:ORCL_KIDD","morefund","1", {'RaiseError' => 1});

# Insert one row
#my $rows = $dbh->do("INSERT INTO TBL_TEST(id,name,pid) VALUES (20,'test',20)");

my @lines;
my $filename='./prospects.csv';

tie(@lines,'Tie::File',$filename) or die;

#print "insert $rows rows\n";
# query
my $sth = $dbh->prepare("select fund_id from acc_settleday where rownum <=200000");

$sth->execute;
$N=0;
while(my @ref = $sth->fetchrow_array ) {
    $N++;
    $lines[$N]="$ref[0]\n";
}
untie(@lines);

$dbh->disconnect();

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378343-1-1.html 上篇帖子: Perl 有几个阶段 下篇帖子: perl解析excel
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表