import-system-dev.pl 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/usr/bin/perl
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. #Обновляем БД устрйств
  6. use FindBin '$Bin';
  7. use lib "$Bin/";
  8. use Data::Dumper;
  9. use Rstat::config;
  10. use Rstat::main;
  11. use Rstat::mysql;
  12. use Rstat::net_utils;
  13. use strict;
  14. use warnings;
  15. print "Stage 0: Read system devices\n";
  16. my @user_devices=();
  17. if (-e "system-devs.csv") {
  18. my @nSQL=read_file("system-devs.csv");
  19. foreach my $row (@nSQL) {
  20. my ($dev_id,$dev_model,$dev_vendor) = split(/;/,$row);
  21. my $device;
  22. $device->{id}=$dev_id;
  23. $device->{model_name}=$dev_model;
  24. $device->{vendor_id}=$dev_vendor;
  25. push(@user_devices,$device);
  26. }
  27. }
  28. print "Stage 1: Read system vendors\n";
  29. my @user_vendors=();
  30. if (-e "system-vendors.csv") {
  31. my @nSQL=read_file("system-vendors.csv");
  32. foreach my $row (@nSQL) {
  33. my ($vendor_id,$vendor_name) = split(/;/,$row);
  34. my $vendor;
  35. $vendor->{id}=$vendor_id;
  36. $vendor->{name}=$vendor_name;
  37. push(@user_vendors,$vendor);
  38. }
  39. }
  40. print "Done!\n";
  41. my %vendor_migration;
  42. print "Import Vendors\n";
  43. foreach $vendor (@user_vendors) {
  44. #seach exists vendor
  45. my $vendor_exist = get_record_sql($dbh,"SELECT * FROM vendors WHERE LOWER(name)='".lc(trim($vendor->{name}))."'");
  46. if ($vendor_exist) {
  47. next if ($vendor_exist->{id} = $vendor->{id});
  48. do_sql($dbh,"UPDATE vendors SET id=".$vendor->{id}." WHERE id=".$vendor_exist->{id});
  49. do_sql($dbh,"UPDATE device_models SET vendor_id=".$vendor->{id}." WHERE vendor_id=".$vendor_exist->{id});
  50. do_sql($dbh,"UPDATE devices SET vendor_id=".$vendor->{id}." WHERE vendor_id=".$vendor_exist->{id});
  51. next;
  52. }
  53. print "id: $vendor->{name} Migrated.\n";
  54. insert_record($dbh,"vendors",$vendor);
  55. }
  56. print "Done!\n";
  57. print "Import devices\n";
  58. foreach $device (@user_devices) {
  59. #seach exists device
  60. my $device_exist = get_record_sql($dbh,"SELECT * FROM device_models WHERE vendor_id=".$device->{vendor_id}." AND LOWER(model_name)='".lc(trim($device->{model_name}))."'");
  61. if ($device_exist) {
  62. next if ($device_exist->{id} = $device->{id});
  63. do_sql($dbh,"UPDATE device_models SET id=".$device->{id}." WHERE id=".$device_exist->{id});
  64. do_sql($dbh,"UPDATE devices SET device_model_id=".$device->{id}." WHERE device_model_id=".$device_exist->{id});
  65. next;
  66. }
  67. print "id: $device->{model_name} Migrated.\n";
  68. insert_record($dbh,"device_models",$device);
  69. }
  70. print "Done!\n";
  71. exit;