#!/usr/bin/perl
use XML::Simple;
use Data::Dumper;
use DBI;
use Encode;
use strict;
use encoding "gbk";
#判断是否传递XML文件参数
if (open(MYFILE, "$ARGV[0]")) {
# here's what to do if the file opened successfully
print "\n\"$ARGV[0]\" : file exist! parse beginning!\n";
#获得EMS名称
my @ems = split(/\_/,$ARGV[0]);
print "@ems[1]\n";
#获得XML文件数据
my $data = XMLin($ARGV[0]);
#print Dumper($data);
#打印文件时间戳
print "Timestamp = $data->{'timestamp'}\n\n";
my $i = 0;
#判断是否存在下一条网元记录
print "appending to csv...\n";
while( $data->{'output'}->{'TopoMgr.NEAdditionalInfoType-array'}->{'TopoMgr.NEAdditionalInfoType'}->[$i] )
{
print "\@ record num = $i\n";
my $text = "$data->{'output'}->{'TopoMgr.NEAdditionalInfoType-array'}->{'TopoMgr.NEAdditionalInfoType'}->[$i]->{'neName'}\n";
print $text;
#将分析出的数据追加到FILE末尾
open(APPENDFILE, ">>perlne.dat");
#转为utf-8后不报字符串过长异常,不转不影响效果
Encode::_utf8_off($text);
print APPENDFILE ($text);
close(APPENDFILE);
# Connect to target DB
#my $dbh=DBI->connect("DBI:mysql:test:192.168.1.14", 'root', 'root');
my $dbh = DBI->connect( 'DBI:Oracle:ora10g','res_col','res_col');
#$dbh->do("SET character_set_client = 'utf-8'");
#$dbh->do("SET character_set_connection = 'utf-8'");
#$dbh->do("SET character_set_results= 'utf-8'");
#$dbh->do("SET names 'gbk'");
#Encode::_utf8_off($nename);
# Insert one row
my $rows = $dbh->do("INSERT INTO neinfo(text) VALUES ('$text')");
$dbh->disconnect();
$i ++;
}
close(MYFILE);
# query
my $dbh = DBI->connect( 'DBI:Oracle:ora10g','res_col','res_col');
my $sqr = $dbh->prepare("SELECT * FROM neinfo");
$sqr->execute();
while ( my @row=$sqr->fetchrow_array() )
{
#print join('\t', @row)."\n";
print join(',', @row)."\n";
}
$sqr->finish();
$dbh->disconnect();
print 'END...';
}unless (open (MYFILE, "$ARGV[0]")) {
die ("cannot open input file $ARGV[0]\n");
close(MYFILE);
}
xml如下
<?xml version="1.0" encoding="GBK"?>
<outputlist timestamp="20090917232423">
<output>
<TopoMgr.NEAdditionalInfoType-array>
<TopoMgr.NEAdditionalInfoType>
<neId>134217729</neId>
<neName>测试1 [1-1]</neName>
</TopoMgr.NEAdditionalInfoType>
<TopoMgr.NEAdditionalInfoType>
<neId>134217731</neId>
<neName>测试2 [1-2]</neName>
</TopoMgr.NEAdditionalInfoType>
</TopoMgr.NEAdditionalInfoType-array>
</output>
</outputlist>
运行perl脚本时需要跟一个文件名的参数
分享到:
相关推荐
它们可能包含用某种编程语言(如C、Perl、Python或RPG)编写的脚本,用于读取`proc`数据库,将数据写入文件,然后从文件中读取数据并导入回数据库。代码可能会涉及文件I/O操作、数据库连接和SQL语句的执行。 源码...
执行此命令后,Perl脚本会读取XML文件,解析其中的漏洞信息,并将其写入CSV文件。 CSV文件的结构通常包含列标题,如“Host”,“Port”,“Service”,“Plugin ID”,“Plugin Name”,“Description”等,每个...
- **文本处理**:Perl对文本处理有出色的支持,处理CSV、XML、JSON等数据格式非常方便。 - **系统交互**:Perl可以轻松与操作系统进行交互,执行系统命令,读写文件,控制进程等。 对于初学者,了解Perl的基本语法...
- **导出到数据库**: 使用数据库接口包,如`RMySQL`,可以直接将数据写入数据库中。 #### 五、高级数据导入与导出技术 - **XML**: 使用`XML`包处理XML格式的数据。 - **JSON**: JSON数据的处理通常依赖于如`...
7. **文件操作** - 学习打开、读取、写入和关闭文件的方法,理解文件指针的概念,并掌握文件处理的错误处理。 8. **模块与CPAN** - 介绍Perl的模块系统,以及CPAN(Comprehensive Perl Archive Network)——一个...
5. **输出报告**:将汇总的信息写入新的文件,或者以用户友好的格式(如表格、图形)显示出来,方便后续分析。 在实际操作中,用户可能需要根据自己的需求调整这个Perl脚本,比如增加对特定区域的比对结果分析,...
12. **文件处理和文本处理**:处理CSV、XML、JSON等格式的数据,以及常见的文本处理任务。 13. **网络编程**:创建TCP/IP套接字,进行HTTP、FTP等协议的交互。 14. **系统接口**:调用系统命令,如system和exec,...
4. **文件I/O**:Perl提供了简单易用的文件输入/输出功能,可以方便地读取DSX文件并将其内容写入其他格式,如JSON或CSV,以供其他工具或系统使用。 5. **模块化编程**:在“parse_datastage_dsx”项目中,可能包含...
3. **文件处理能力**:对于 CSV、Excel 和 XML 等常见文件格式,不仅支持读取还支持写入操作,使得数据处理更加灵活。 4. **元数据管理**:通过建立元数据存储库来管理和利用这些元数据,为不同的作业提供便利。 5. ...
Perl提供了许多库(如Text::CSV、JSON和XML::Simple)来处理这些格式,方便读取和写入数据。 此外,项目可能包括Perl脚本,这些脚本可能用于处理数据,例如提取特定信息、转换数据格式、过滤或聚合数据。Perl的正则...
在处理结构化文本数据时,理解并熟练运用这些工具,能够极大地提高工作效率,无论是数据分析、日志分析还是自动化任务,都有其独特的价值。在实际工作中,往往需要结合使用多种工具,根据具体需求进行组合和定制,...
2. 读取活动报告,这可能涉及解析不同的文件格式,如CSV、JSON或XML,以提取所需数据。 3. 数据清洗和预处理,可能包括去除无效值、转换数据类型或标准化格式,确保数据质量。 4. 提取关键信息,如交易日期、金额、...
Catmandu 原本是用 Perl 编写的,它提供了一种简单的方式来处理非结构化和半结构化的数据,如 XML、JSON、CSV 文件等。它支持多种操作,如添加、删除、修改记录,以及使用自定义函数进行复杂的转换。Catmandu 的核心...
2. **文本处理**:Perl擅长处理和解析复杂的文本格式,如CSV、XML或日志文件。 3. **模块化编程**:CPAN(Comprehensive Perl Archive Network)提供了大量预编译的模块,涵盖各种功能,方便快速构建应用。 4. **...
项目可能包含了写入CSV、JSON或其他格式文件的代码,也可能使用了像`sqlite`这样的轻量级数据库。 6. **错误处理与重试机制**:考虑到网络不稳定性和网页结构的变化,刮板需要有良好的错误处理和重试机制。这可能...