caipiao: 数据从一个数据库转移到另一个数据库(新旧数据库:表的结构不同;PHP)
一、php源代码
1 [wit@fedora dlt]$ cat dltlibs_backup.php
2 #!/usr/bin/env php
3
4
5 <?php
6
7
8
9
10 // insert49() - insert $dlt_data to $dlt_tbl; 49 - 49 items.
11 function insert49($tbl_name, $data)
12 {
13
14 // $sql = "insert into $tbl_name(uid, udate, f$data[2], f$data[3], f$data[4], f$data[5], f$data[6], b$data[7], b$data[8])
15 // values($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8])";
16
17 $sql = "insert into $tbl_name(uid, udate, f$data[2], f$data[3], f$data[4], f$data[5], f$data[6], b$data[7], b$data[8]) values($data[0], \"$data[1]\", $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8])";
18
19 /*
20 echo "\n\n";
21 echo $sql;
22 echo "\n\n";
23 */
24
25 return $sql;
26 }
27
28
29
30
31 // insert9() - insert $dlt_data to $dlt_tbl; 9 - 9 items.
32 function insert9($tbl_name, $data)
33 {
34
35 $sql = "insert into $tbl_name values($data[0], \"$data[1]\", $data[2], $data[3], $data[4], $data[5], $data[6], $data[7], $data[8])";
36
37 /*
38 echo "\n\n";
39 echo $sql;
40 echo "\n\n";
41 */
42
43 return $sql;
44
45 }
46
47
48 // test insert()
49
50 /*
51 $tbl_name = "dlt2023";
52 $data = array("2023001", "2023-01-02", 18, 19, 24, 27, 34, 02, 07);
53
54 insert49($tbl_name, $data);
55 insert9($tbl_name, $data);
56 */
57
58
59
60
61
62 // db1todb2() - insert data from db1 to db2.
63 // db1todb2() - data from db1 insert to db2.
64 // db1todb2() - db1 to db2.
65
66 function db1todb2($tb1, $tb2)
67 {
68
69 $server1 = "server1_ip"; // your server ip
70 $user1 = "user1"; // your user name
71 $passwd1 = "mima1"; // your database password
72 $db1 = "db1"; // your database name
73
74
75 $server2 = "server2_ip"; // your server ip
76 $user2 = "user2"; // your user name
77 $passwd2 = "mima2"; // your database password
78 $db2 = "db2"; // your database name
79
80
81 try {
82
83 $conn1 = new PDO("mysql:host=$server1;dbname=$db1", $user1, $passwd1 );
84 $conn2 = new PDO("mysql:host=$server2;dbname=$db2", $user2, $passwd2 );
85
86
87 $conn1 -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
88 $conn2 -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
89
90
91 $conn2 ->query("truncate table $tb2");
92 $tb2_name = "dlt2023";
93 $icount = 0;
94 foreach( $conn1->query("select * from $tb1") as $row){
95 // $sql2 = insert49($tb2_name, $row);
96 $sql2 = insert49($tb2, $row);
97 echo "\nline_$icount: " .$sql2. "\n";
98 $conn2 -> query($sql2);
99 $icount = $icount + 1;
100 }
101
102
103
104 $conn2 = null;
105 $conn1 = null;
106
107 } catch(PDOException $e) {
108 echo "ERROR: ". $e -> getMessage();
109 }
110
111 }
112
113
114 // test db1todb2($tb1, $tb2)
115 $tb1="dlt";
116 $tb2="dlt";
117 db1todb2($tb1, $tb2);
118
119
120
121
122
123 ?>
124 [wit@fedora dlt]$
125 [wit@fedora dlt]$
二、参考文档
1、PHP PDO | 菜鸟教程 https://www.runoob.com/php/php-pdo.html