conn_odbc_ibm.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. $this->query("TRUNCATE TABLE SMEDAT_DIM.INTMUB0F");
  40. $count = 0;
  41. foreach($pdoResult as $key => $value) {
  42. echo "INSERT INTO SMEDAT_DIM.INTMUB0F (UXSTAT, UXCOAP, UXQTGC, UXQTMA) VALUES (10, '${value['UXCOAP']}', ${value['UXQTGC']}, ${value['UXQTMA']})" . PHP_EOL;
  43. $success = $this->query("INSERT INTO SMEDAT_DIM.INTMUB0F (UXSTAT, UXCOAP, UXQTGC, UXQTMA) VALUES (10, '${value['UXCOAP']}', ${value['UXQTGC']}, ${value['UXQTMA']})");
  44. if ($success === FALSE) {
  45. die('Errore');
  46. }
  47. $count++;
  48. }
  49. echo "Inserimenti eseguiti: $count" . PHP_EOL;
  50. }
  51. }
  52. try {
  53. $mav = new MigrationData("sqlsrv:Server=192.168.0.39;Database=icamdbstore", 'sa', 'sa');
  54. $res = $mav->query('SELECT item_id AS UXCOAP, max_load_unit AS UXQTMA, position_quantity AS UXQTGC FROM vw_item_positions');
  55. $db2 = new MigrationData(
  56. "odbc:Driver={iSeries Access ODBC Driver};DefaultLibraries=SMEDAT_DIM;SYSTEM=192.168.0.100",
  57. 'icam',
  58. 'icam'
  59. );
  60. $db2->transferData($res);
  61. } catch (PDOException $exception) {
  62. echo $exception->getMessage();
  63. exit;
  64. }