把几张相同结构的表放到一个表中,并且去掉重复的。(有级联关系)

本文介绍了一种使用PHP进行数据库间数据迁移的方法,通过逐步处理并去除重复数据,确保了数据的一致性和正确性。该过程涉及从源数据库读取数据、检查目标数据库中的对应记录是否存在、若不存在则插入新记录等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

header("Content-Type:text/html; charset:utf-8");
/*
表结构:id fid name_ch……
把几张相同结构的表放到一个表中,并且去掉重复的。(有级联关系)
注意,fid 也是同表父级的id。
处理流程:
1.先处理最高级的:
2.一条条处理,如果一条在目标表存在,则取出id,如果不存在,就插入,取出id,
3.同时更新处理表的父级为本条记录的记录的fid
*/
//standard_jgcd standard_lj standard_sj standard_sy
$table = "standard_jgcd";//处理表
//mysql_connect("202.204.54.212:3306","catalog","catalog");
mysql_connect("localhost","root","1");
mysql_select_db("cata");
mysql_query("set names utf8");
//三级,分级处理
$i = 0;
while($i++<3){
$rs = mysql_query("select * from {$table} where rank = {$i}");//分级操作
while($row = mysql_fetch_array($rs))
{
	$id = "";
	$sql = "select * from standard where rank =' {$row[rank]}' and name_ch = '{$row[name_ch]}' and name_en = '{$row[name_en]}' ";
	//echo $sql."<br/>";
	$rs1 = mysql_query($sql);

	$row_num = mysql_num_rows($rs1);
	if($row_num!= 0){//如果standard表中已经有这条数据,取出它的id,更新处理表table
		$row1 = mysql_fetch_array($rs1);
		$id = $row1[id];

		dump($row1);
	}else{//如果standard表中没有这条数据,插进去,取出它的id,更新处理表table
		mysql_query("insert into standard (name_ch,name_en,rank,fid) values ('{$row[name_ch]}','{$row[name_en]}',{$row[rank]},{$row[fid]})");
		$id = mysql_insert_id();
		echo "<br/>insert {$id}<br/>";
		echo "insert into standard (name_ch,name_en,rank,fid) values (select name_ch,name_en,rank,fid from {$table} where id = {$row[id]})";


	}
//更新table中的父id
	 mysql_query("update {$table} set fid = {$id} where fid = {$row[id]}");
echo "<br/>".mysql_affected_rows();
	echo "<br/>  update {$table} set fid = {$id} where fid = {$row[id]}<br/>";
}

}
function dump($rs)
{
echo "<pre>";
print_r($rs);
echo "</pre>";

}



?>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值