export-system-dev.pl 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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 "Migrate User dev to System dev\n";
  17. my @dev_models = get_records_sql($dbh,"SELECT * FROM device_models WHERE id>=10000");
  18. foreach my $dev (@dev_models) {
  19. my $device_max = get_record_sql($dbh,"SELECT MAX(id) as fmax FROM device_models WHERE id<10000");
  20. my $old_id = $dev->{id};
  21. $dev->{id}=$device_max->{'fmax'}+1;
  22. update_record($dbh,"device_models",$dev,"id=".$old_id);
  23. do_sql($dbh,"UPDATE devices SET device_model_id=".$dev->{id}." WHERE device_model_id=".$old_id);
  24. }
  25. my @vendors = get_records_sql($dbh,"SELECT * FROM vendors WHERE id>=10000");
  26. foreach my $vendor (@vendors) {
  27. my $vendor_max = get_record_sql($dbh,"SELECT MAX(id) as fmax FROM vendors WHERE id<10000");
  28. my $old_id = $vendor->{id};
  29. $vendor->{id}=$vendor_max->{'fmax'}+1;
  30. update_record($dbh,"vendors",$vendor,"id=".$old_id);
  31. do_sql($dbh,"UPDATE device_models SET vendor_id=".$vendor->{id}." WHERE vendor_id=".$old_id);
  32. do_sql($dbh,"UPDATE devices SET vendor_id=".$vendor->{id}." WHERE vendor_id=".$old_id);
  33. }
  34. print "Export Devices\n";
  35. #new models
  36. @dev_models = get_records_sql($dbh,"SELECT * FROM device_models WHERE id<10000");
  37. foreach my $dev (@dev_models) {
  38. write_to_file("system-devs.csv",$dev->{id}.";".$dev->{model_name}.";".$dev->{vendor_id},1);
  39. }
  40. print "Done!\n";
  41. print "Export Vendors\n";
  42. my @dev_vendors = get_records_sql($dbh,"SELECT * FROM vendors WHERE id<10000");
  43. foreach my $row (@dev_vendors) {
  44. write_to_file("system-vendors.csv",$row->{id}.";".$row->{name},1);
  45. }
  46. print "Done!\n";
  47. exit;