conn_odbc_ibm.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?
  2. class MigrationData
  3. {
  4. private $hdb;
  5. public function __construct($dsn, $user, $pass)
  6. {
  7. try {
  8. $this->hdb = new PDO($dsn, $user, $pass);
  9. $this->hdb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  10. } catch (PDOException $exception) {
  11. echo $exception->getMessage();
  12. die;
  13. }
  14. }
  15. public function query($sql, $mode = PDO::FETCH_ASSOC)
  16. {
  17. return $this->hdb->query($sql, $mode);
  18. }
  19. /**
  20. * @param $result
  21. * @return int row count
  22. */
  23. public function toCSV($result): int
  24. {
  25. $count = 0;
  26. foreach($result as $key => $value) {
  27. $arr = [];
  28. array_map(function ($v) use (&$arr) {
  29. $arr[] = str_pad(ltrim(rtrim($v)), 5, ' ');
  30. }, $value);
  31. echo join('|', $arr);
  32. echo PHP_EOL;
  33. $count++;
  34. }
  35. return $count;
  36. }
  37. public function transferData($pdoResult)
  38. {
  39. $count = 0;
  40. foreach($pdoResult as $key => $value) {
  41. echo "INSERT INTO INTMUB0F (UXSTAT, UXCOAP, UXQTGC, UXQTMA) VALUES (10, '${value['UXCOAP']}', ${value['UXQTGC']}, ${value['UXQTMA']})" . PHP_EOL;
  42. $success = $this->query("INSERT INTO INTMUB0F (UXSTAT, UXCOAP, UXQTGC, UXQTMA) VALUES (10, '${value['UXCOAP']}', ${value['UXQTGC']}, ${value['UXQTMA']})");
  43. if ($success === FALSE) {
  44. die('Errore');
  45. }
  46. $count++;
  47. }
  48. echo "Inserimenti eseguiti: $count" . PHP_EOL;
  49. }
  50. }
  51. try {
  52. $mav = new MigrationData("sqlsrv:Server=192.168.0.39;Database=icamdbstore", 'sa', 'sa');
  53. $res = $mav->query('SELECT item_id AS UXCOAP, max_load_unit AS UXQTMA, position_quantity AS UXQTGC FROM vw_item_positions');
  54. $db2 = new MigrationData('odbc:dicamas400', 'icam', 'icam');
  55. $db2->transferData($res);
  56. } catch (PDOException $exception) {
  57. echo $exception->getMessage();
  58. exit;
  59. }