Advertisement
Anakthewolf

Import XLSX data into MySQL with Perl

Oct 24th, 2014
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.31 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. # programmaIlFuturo.it import hack from MIUR data to CMS MySQL DB - by Anak | anak@cpan.org - 22.08.2014 - GNU GPL v2
  4.  
  5. use strict;
  6. use warnings;
  7. use feature 'say','switch';
  8.  
  9. use DBI;
  10. use Spreadsheet::XLSX;
  11.  
  12. our $version='0.1';
  13.  
  14. my $xlsxDocument='anagrafe_istituti_principale_2014_2015_nuove-province.xlsx';
  15. my $excel=Spreadsheet::XLSX->new($xlsxDocument);
  16.  
  17. my $dbh=dbConnect('user','password','dbname','host');
  18. my $dbTable='miur_data';
  19.  
  20. foreach my $sheet (@{$excel->{Worksheet}}) {
  21.     foreach my $row(1..$sheet->{MaxRow}) {
  22.  
  23.         my $regione=$sheet->{Cells}[$row][0]->{Val};
  24.         my $provincia=$sheet->{Cells}[$row][1]->{Val};
  25.         my $siglaProvincia=$sheet->{Cells}[$row][2]->{Val};
  26.         my $codiceComune=$sheet->{Cells}[$row][3]->{Val};
  27.         my $comune=$sheet->{Cells}[$row][4]->{Val};
  28.         my $codiceIstituto=$sheet->{Cells}[$row][5]->{Val};
  29.         my $denominazione=$sheet->{Cells}[$row][6]->{Val};
  30.         my $indirizzo=$sheet->{Cells}[$row][7]->{Val};
  31.         my $tipoIstituto=$sheet->{Cells}[$row][8]->{Val};
  32.         my $tipologia=$sheet->{Cells}[$row][9]->{Val};
  33.         my $codiceProvinciaNuova=$sheet->{Cells}[$row][10]->{Val};
  34.         my $nomeProvinciaNuova=$sheet->{Cells}[$row][11]->{Val};
  35.         my $siglaProvinciaNuova=$sheet->{Cells}[$row][12]->{Val};
  36.        
  37.         say '--> '.$regione.' > '.$provincia.' > '.$comune.' > '.$denominazione;
  38.        
  39.         my $sth = $dbh->prepare("
  40.             INSERT INTO ".$dbTable." (
  41.                 regione,
  42.                 provincia,
  43.                 sigla,
  44.                 codice_comune,
  45.                 comune,
  46.                 codice_istituto,
  47.                 denominazione,
  48.                 indirizzo,
  49.                 tipo_istituto,
  50.                 tipologia,
  51.                 codice_provincia_nuova,
  52.                 nome_provincia_nuova,
  53.                 sigla_provincia_nuova
  54.             )
  55.             VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)
  56.         ") or die $_;
  57.         $sth->execute(
  58.                 $regione,
  59.                 $provincia,
  60.                 $siglaProvincia,
  61.                 $codiceComune,
  62.                 $comune,
  63.                 $codiceIstituto,
  64.                 $denominazione,
  65.                 $indirizzo,
  66.                 $tipoIstituto,
  67.                 $tipologia,
  68.                 $codiceProvinciaNuova,
  69.                 $nomeProvinciaNuova,
  70.                 $siglaProvinciaNuova
  71.         ) or die $_;
  72.         $dbh->commit;
  73.     }
  74. }
  75.  
  76. say '--> Importazione completata con successo';
  77. exit;
  78.  
  79. sub dbConnect {
  80.     my ($dbUser,$dbPass,$dbName,$dbHost)=@_;
  81.    
  82.     my $dsn="DBI:mysql:database=$dbName;host=$dbHost";
  83.     my $dbh=DBI->connect(
  84.         $dsn,
  85.         $dbUser,
  86.         $dbPass,
  87.         {RaiseError => 1}
  88.     ) or die DBI->errstr;
  89.  
  90.     $dbh->{AutoCommit}=0;
  91.     return $dbh
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement