Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 25th, 2012  |  syntax: None  |  size: 7.94 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. PERL databases to file
  2. $expsel->bind_columns($tabelnaam,$huidige,$id);
  3. while($expsel->fetch()) {
  4.  
  5.     $tbl        = substr($tabelnaam, 0,4);
  6.     $tblnr      = substr($tabelnaam, 2,2);
  7.  
  8.     $i = 0;
  9.     $exp_spec = $dbh->prepare("SELECT * FROM tblExportspecificatie WHERE tabelnaam = '".$tbl."' ORDER BY id");
  10.     $exp_spec->execute();
  11.     $exp_spec->bind_columns($id, $tblnaam, $vldnaam, $vldlngte, $ascii, $telveld, $tellen, $keystring);
  12.     while($exp_spec->fetch()){
  13.         if($i == 0){
  14.             @AoA = ([ $tbl, $vldnaam, $vldlngte, $ascii, $telveld, $tellen, $keystring ]);
  15.         }else{
  16.             push @{ $AoA[$i] }, $tbl, $vldnaam, $vldlngte, $ascii, $telveld, $tellen, $keystring;
  17.         }
  18.         $i++;
  19.     }
  20.     $exp_spec->finish();
  21.  
  22.     # Start regel wegschrijven aan het begin van de nieuwe tabel reeks
  23.     # printf FILE "10".$tblnr.pad2str(252, 1, "").chr(10);
  24.  
  25.     $tbl_data = $dba->prepare("SELECT * FROM ".$tbl." LIMIT 5");
  26.     $tbl_data->execute();
  27.  
  28.     $regels = $tbl_data->rows;
  29.  
  30.     my @array;
  31.     while ( my @arr = $tbl_data->fetchrow_array() ) {
  32.         push @array,@arr;
  33.     }
  34.  
  35.     for($s = 0; $s < $regels; $s++){
  36.         for($x = 0; $x < $i; $x++){
  37.             if($x == 0){
  38.                 if($AoA[0][1] eq "F0101" || $AoA[0][1] eq "F6115"){
  39.                     printf FILE $tblnr.pad2str(4, 0, $gemeentecode).pad2str(8, $AoA[0][3], $array[$s][$x]);
  40.                 }else{
  41.                     printf FILE $tblnr.pad2str($AoA[0][2], $AoA[0][3], $array[$s][$x]);
  42.                 }
  43.             }else{
  44.                 printf FILE pad2str($AoA[$x][2], $AoA[$x][3], $array[$s][$x]);
  45.             }
  46.  
  47.         }
  48.         printf FILE "--".chr(10);
  49.     }
  50.     printf FILE chr(10);
  51.     print Dumper @AoA;
  52.     print Dumper @array;
  53.  
  54.     @$AoA = 0;      
  55. }
  56.        
  57. $VAR1 = [
  58.           'st31',
  59.           'F0120',
  60.           '9',
  61.           '0',
  62.           '0',
  63.           '0',
  64.           ''
  65.         ];
  66. $VAR2 = [
  67.           'st31',
  68.           'F1110',
  69.           '24',
  70.           '1',
  71.           '0',
  72.           '0',
  73.           ''
  74.         ];
  75. $VAR3 = [
  76.           'st31',
  77.           'F1120',
  78.           '5',
  79.           '0',
  80.           '0',
  81.           '0',
  82.           ''
  83.         ];
  84. $VAR4 = [
  85.           'st31',
  86.           'F1130',
  87.           '1',
  88.           '1',
  89.           '0',
  90.           '0',
  91.           ''
  92.         ];
  93. $VAR5 = [
  94.           'st31',
  95.           'F1140',
  96.           '4',
  97.           '1',
  98.           '0',
  99.           '0',
  100.           ''
  101.         ];
  102. $VAR6 = [
  103.           'st31',
  104.           'F1150',
  105.           '2',
  106.           '1',
  107.           '0',
  108.           '0',
  109.           ''
  110.         ];
  111. $VAR7 = [
  112.           'st31',
  113.           'F1160',
  114.           '6',
  115.           '1',
  116.           '0',
  117.           '0',
  118.           ''
  119.         ];
  120. $VAR8 = [
  121.           'st31',
  122.           'F1020',
  123.           '40',
  124.           '1',
  125.           '0',
  126.           '0',
  127.           ''
  128.         ];
  129. $VAR9 = [
  130.           'st31',
  131.           'F1310',
  132.           '40',
  133.           '1',
  134.           '0',
  135.           '0',
  136.           ''
  137.         ];
  138. $VAR10 = [
  139.            'st31',
  140.            'F8110',
  141.            '1',
  142.            '1',
  143.            '0',
  144.            '0',
  145.            ''
  146.          ];
  147. $VAR11 = [
  148.            'st31',
  149.            'F8120',
  150.            '8',
  151.            '2',
  152.            '0',
  153.            '0',
  154.            ''
  155.          ];
  156. $VAR12 = [
  157.            'st31',
  158.            'F8130',
  159.            '8',
  160.            '2',
  161.            '0',
  162.            '0',
  163.            ''
  164.          ];
  165. $VAR13 = [
  166.            'st31',
  167.            'F1170',
  168.            '40',
  169.            '1',
  170.            '0',
  171.            '0',
  172.            ''
  173.          ];
  174. $VAR14 = [
  175.            'st31',
  176.            'F0121',
  177.            '10',
  178.            '0',
  179.            '0',
  180.            '0',
  181.            ''
  182.          ];
  183. $VAR15 = [
  184.            'st31',
  185.            'F0130',
  186.            '8',
  187.            '0',
  188.            '0',
  189.            '0',
  190.            ''
  191.          ];
  192. $VAR16 = [
  193.            'st31',
  194.            'FILLER',
  195.            '4',
  196.            '1',
  197.            '0',
  198.            '0',
  199.            ''
  200.          ];
  201. $VAR17 = [
  202.            'st31',
  203.            'F0140',
  204.            '10',
  205.            '0',
  206.            '0',
  207.            '0',
  208.            ''
  209.          ];
  210. $VAR18 = [
  211.            'st31',
  212.            'F0220',
  213.            '2',
  214.            '1',
  215.            '0',
  216.            '0',
  217.            ''
  218.          ];
  219. $VAR19 = [
  220.            'st31',
  221.            'FILLER',
  222.            '1',
  223.            '1',
  224.            '0',
  225.            '0',
  226.            ''
  227.          ];
  228. $VAR20 = [
  229.            'st31',
  230.            'F0410',
  231.            '1',
  232.            '1',
  233.            '0',
  234.            '0',
  235.            ''
  236.          ];
  237. $VAR21 = [
  238.            'st31',
  239.            'F0310',
  240.            '8',
  241.            '2',
  242.            '0',
  243.            '0',
  244.            ''
  245.          ];
  246. $VAR22 = [
  247.            'st31',
  248.            'F0810',
  249.            '8',
  250.            '2',
  251.            '0',
  252.            '0',
  253.            ''
  254.          ];
  255. $VAR23 = [
  256.            'st31',
  257.            'F0811',
  258.            '1',
  259.            '1',
  260.            '0',
  261.            '0',
  262.            ''
  263.          ];
  264. $VAR24 = [
  265.            'st31',
  266.            'FILLER',
  267.            '5',
  268.            '1',
  269.            '0',
  270.            '0',
  271.            ''
  272.          ];
  273. $VAR25 = [
  274.            'st31',
  275.            'F1010',
  276.            '1',
  277.            '1',
  278.            '0',
  279.            '0',
  280.            ''
  281.          ];
  282. $VAR26 = [
  283.            'st31',
  284.            'FILLER',
  285.            '7',
  286.            '1',
  287.            '0',
  288.            '0',
  289.            ''
  290.          ];
  291. $VAR1 = [
  292.           '170805955',
  293.           'Waterlelie              ',
  294.           '16',
  295.           undef,
  296.           undef,
  297.           undef,
  298.           '3434VK',
  299.           'Nieuwegein                              ',
  300.           undef,
  301.           'I',
  302.           '2010-01-01',
  303.           '2011-01-01',
  304.           undef,
  305.           '356000000',
  306.           '0',
  307.           '2147483647',
  308.           undef,
  309.           'V',
  310.           '1946-10-24',
  311.           '0000-00-00',
  312.           'A',
  313.           'W'
  314.         ];
  315.        
  316. <<DEBUG>> L-> 9 AS-> 0, DATA-> 170805955
  317. <<DEBUG>> L-> 24 AS-> 1, DATA-> Waterlelie              
  318. <<DEBUG>> L-> 5 AS-> 0, DATA-> 16
  319. <<DEBUG>> L-> 1 AS-> 1, DATA->  
  320. <<DEBUG>> L-> 4 AS-> 1, DATA->  
  321. <<DEBUG>> L-> 2 AS-> 1, DATA->  
  322. <<DEBUG>> L-> 6 AS-> 1, DATA-> 3434VK
  323. <<DEBUG>> L-> 40 AS-> 1, DATA-> Nieuwegein                              
  324. <<DEBUG>> L-> 40 AS-> 1, DATA->  
  325. <<DEBUG>> L-> 1 AS-> 1, DATA-> I
  326. <<DEBUG>> L-> 8 AS-> 2, DATA-> 2010-01-01
  327. <<DEBUG>> L-> 8 AS-> 2, DATA-> 2011-01-01
  328. <<DEBUG>> L-> 40 AS-> 1, DATA->  
  329. <<DEBUG>> L-> 10 AS-> 0, DATA-> 356000000
  330. <<DEBUG>> L-> 8 AS-> 0, DATA-> 0
  331. <FILLER> <-- things are getting messy!
  332. <<DEBUG>> L-> 4 AS-> 1, DATA-> 2147483647
  333. <<DEBUG>> L-> 10 AS-> 0, DATA->  
  334. <<DEBUG>> L-> 2 AS-> 1, DATA-> V
  335. <<DEBUG>> L-> 1 AS-> 1, DATA-> 1946-10-24
  336. <<DEBUG>> L-> 1 AS-> 1, DATA-> 0000-00-00
  337. <<DEBUG>> L-> 8 AS-> 2, DATA-> A
  338. <<DEBUG>> L-> 8 AS-> 2, DATA-> W
  339. <<DEBUG>> L-> 1 AS-> 1, DATA->  
  340. <<DEBUG>> L-> 5 AS-> 1, DATA->  
  341. <<DEBUG>> L-> 1 AS-> 1, DATA->  
  342. <<DEBUG>> L-> 7 AS-> 1, DATA->
  343.        
  344. use List::MoreUtils qw<pairwise>;
  345.  
  346. # push behavior into statement handles...
  347. {   package DBI::st;
  348.     sub get_rows {
  349.         my $sth = shift;
  350.         my @results;
  351.         $sth->execute( @_ );
  352.         while ( my @row = $sth->fetchrow_array ) {
  353.             push @results, @row;
  354.         }
  355.         $sth->close;
  356.         return @results;
  357.     }
  358. }
  359.  
  360. my %needs_adjustment = qw<F0101 1 F6115 1>;
  361. $expsel->bind_columns( $tabelnaam, $huidige, $id);
  362. while( $expsel->fetch()) {
  363.  
  364.     $tbl   = substr( $tabelnaam, 0, 4 );
  365.     $tblnr = substr( $tabelnaam, 2, 2 );
  366.  
  367.     my ( $first_col )
  368.         = @AoA
  369.         = $dbh->prepare( qq/
  370.           SELECT *
  371.             FROM tblExportspecificatie
  372.            WHERE tabelnaam = '$tbl'
  373.           ORDER BY id
  374.         / )->get_rows
  375.         ;
  376.  
  377.     my $adjust_first = $needs_adjustment{ $first_col->[1] };
  378.     $first_col->[2]  = 8 if $adjust_first;
  379.     ( $sth = $dba->prepare("SELECT * FROM $tbl LIMIT 5"))->execute;
  380.  
  381.     while ( my $row = $sth->fetchrow_arrayref ) {
  382.         print $fh
  383.               $tblnr
  384.             , ( $adjust_first ? pad2str( 4, 0, $gemeentecode ) : '' )
  385.             , ( pairwise { pad2str( @$a[2,3], $b ) } @AoA, @$row )
  386.             , chr(10)
  387.             ;
  388.     }
  389.     print $fh chr(10);
  390. }