1
0

import-user-dev.pl 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/usr/bin/perl
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. #Импортируем юзеровские устройства в системную БД
  6. # !!!!! НЕ ЗАПУСКАТЬ НА РАБОЧЕЙ КОНФИГУРАЦИИ !!!!!!
  7. use FindBin '$Bin';
  8. use lib "$Bin/";
  9. use Data::Dumper;
  10. use eyelib::config;
  11. use eyelib::main;
  12. use eyelib::mysql;
  13. use eyelib::net_utils;
  14. use strict;
  15. use warnings;
  16. print "Stage 0: Read user devices\n";
  17. my @user_devices=();
  18. if (-e "user-devs.csv") {
  19. my @nSQL=read_file("user-devs.csv");
  20. foreach my $row (@nSQL) {
  21. my ($dev_id,$dev_model,$dev_vendor) = split(/;/,$row);
  22. my $device;
  23. $device->{id}=$dev_id;
  24. $device->{model_name}=$dev_model;
  25. $device->{vendor_id}=$dev_vendor;
  26. push(@user_devices,$device);
  27. }
  28. }
  29. print "Stage 1: Read vendors\n";
  30. my @user_vendors=();
  31. if (-e "user-vendors.csv") {
  32. my @nSQL=read_file("user-vendors.csv");
  33. foreach my $row (@nSQL) {
  34. my ($vendor_id,$vendor_name) = split(/;/,$row);
  35. my $vendor;
  36. $vendor->{id}=$vendor_id;
  37. $vendor->{name}=$vendor_name;
  38. push(@user_vendors,$vendor);
  39. }
  40. }
  41. print "Done!\n";
  42. my %vendor_migration;
  43. print "Import Vendors\n";
  44. foreach $vendor (@user_vendors) {
  45. #seach exists vendor
  46. my $vendor_exist = get_record_sql($dbh,"SELECT * FROM vendors WHERE LOWER(name)='".lc(trim($vendor->{name}))."'");
  47. if ($vendor_exist) {
  48. next if ($vendor_exist->{id} = $vendor->{id});
  49. $vendor_migration{$vendor->{id}}=$vendor_exist->{id};
  50. next;
  51. }
  52. print "id: $vendor->{name} Migrated.\n";
  53. my $vendor_max = get_record_sql($dbh,"SELECT MAX(id) as fmax FROM vendors WHERE id<10000");
  54. $vendor_migration{$vendor->{id}}=$vendor_max->{'fmax'}+1;
  55. $vendor->{id}=$vendor_max->{'fmax'}+1;
  56. insert_record($dbh,"vendors",$vendor);
  57. }
  58. print "Done!\n";
  59. print "Import devices\n";
  60. foreach $device (@user_devices) {
  61. $device->{vendor_id}=$vendor_migration{$device->{vendor_id}};
  62. #seach exists device
  63. 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}))."'");
  64. next if ($device_exist);
  65. print "id: $device->{model_name} Migrated.\n";
  66. my $device__max = get_record_sql($dbh,"SELECT MAX(id) as fmax FROM device_models WHERE id<10000");
  67. $device->{id}=$device_max->{'fmax'}+1;
  68. insert_record($dbh,"device_models",$device);
  69. }
  70. print "Done!\n";
  71. exit;