`
lornlorn
  • 浏览: 15230 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Perl分析xml文件并生成csv数据文件,同时写入数据库

阅读更多
#!/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脚本时需要跟一个文件名的参数

分享到:
评论

相关推荐

    proc数据库到文件和文件到数据库

    它们可能包含用某种编程语言(如C、Perl、Python或RPG)编写的脚本,用于读取`proc`数据库,将数据写入文件,然后从文件中读取数据并导入回数据库。代码可能会涉及文件I/O操作、数据库连接和SQL语句的执行。 源码...

    nessus2csv:将 Tenable Nessus xml 输出转换为 csv 电子表格的 Perl 脚本

    执行此命令后,Perl脚本会读取XML文件,解析其中的漏洞信息,并将其写入CSV文件。 CSV文件的结构通常包含列标题,如“Host”,“Port”,“Service”,“Plugin ID”,“Plugin Name”,“Description”等,每个...

    Perl开发环境.zip

    - **文本处理**:Perl对文本处理有出色的支持,处理CSV、XML、JSON等数据格式非常方便。 - **系统交互**:Perl可以轻松与操作系统进行交互,执行系统命令,读写文件,控制进程等。 对于初学者,了解Perl的基本语法...

    R 数据导入和导出.pdf

    - **导出到数据库**: 使用数据库接口包,如`RMySQL`,可以直接将数据写入数据库中。 #### 五、高级数据导入与导出技术 - **XML**: 使用`XML`包处理XML格式的数据。 - **JSON**: JSON数据的处理通常依赖于如`...

    PERL编程24学时教程

    7. **文件操作** - 学习打开、读取、写入和关闭文件的方法,理解文件指针的概念,并掌握文件处理的错误处理。 8. **模块与CPAN** - 介绍Perl的模块系统,以及CPAN(Comprehensive Perl Archive Network)——一个...

    blast.rar_blast

    5. **输出报告**:将汇总的信息写入新的文件,或者以用户友好的格式(如表格、图形)显示出来,方便后续分析。 在实际操作中,用户可能需要根据自己的需求调整这个Perl脚本,比如增加对特定区域的比对结果分析,...

    perl教程24小时pdf

    12. **文件处理和文本处理**:处理CSV、XML、JSON等格式的数据,以及常见的文本处理任务。 13. **网络编程**:创建TCP/IP套接字,进行HTTP、FTP等协议的交互。 14. **系统接口**:调用系统命令,如system和exec,...

    parse_datastage_dsx

    4. **文件I/O**:Perl提供了简单易用的文件输入/输出功能,可以方便地读取DSX文件并将其内容写入其他格式,如JSON或CSV,以供其他工具或系统使用。 5. **模块化编程**:在“parse_datastage_dsx”项目中,可能包含...

    Talend 教程 图解安装配置 届面介绍 等等

    3. **文件处理能力**:对于 CSV、Excel 和 XML 等常见文件格式,不仅支持读取还支持写入操作,使得数据处理更加灵活。 4. **元数据管理**:通过建立元数据存储库来管理和利用这些元数据,为不同的作业提供便利。 5. ...

    data-jp-areas

    Perl提供了许多库(如Text::CSV、JSON和XML::Simple)来处理这些格式,方便读取和写入数据。 此外,项目可能包括Perl脚本,这些脚本可能用于处理数据,例如提取特定信息、转换数据格式、过滤或聚合数据。Perl的正则...

    结构化文本工具:用于处理结构化文本数据的命令行工具列表

    在处理结构化文本数据时,理解并熟练运用这些工具,能够极大地提高工作效率,无论是数据分析、日志分析还是自动化任务,都有其独特的价值。在实际工作中,往往需要结合使用多种工具,根据具体需求进行组合和定制,...

    getMOAlines

    2. 读取活动报告,这可能涉及解析不同的文件格式,如CSV、JSON或XML,以提取所需数据。 3. 数据清洗和预处理,可能包括去除无效值、转换数据类型或标准化格式,确保数据质量。 4. 提取关键信息,如交易日期、金额、...

    JCatmandu:Catmandu 的 Java 克隆

    Catmandu 原本是用 Perl 编写的,它提供了一种简单的方式来处理非结构化和半结构化的数据,如 XML、JSON、CSV 文件等。它支持多种操作,如添加、删除、修改记录,以及使用自定义函数进行复杂的转换。Catmandu 的核心...

    codeeval:CodeEval 解决方案

    2. **文本处理**:Perl擅长处理和解析复杂的文本格式,如CSV、XML或日志文件。 3. **模块化编程**:CPAN(Comprehensive Perl Archive Network)提供了大量预编译的模块,涵盖各种功能,方便快速构建应用。 4. **...

    simple-web-scraper

    项目可能包含了写入CSV、JSON或其他格式文件的代码,也可能使用了像`sqlite`这样的轻量级数据库。 6. **错误处理与重试机制**:考虑到网络不稳定性和网页结构的变化,刮板需要有良好的错误处理和重试机制。这可能...

Global site tag (gtag.js) - Google Analytics