mysql 重复数据防止插入:)
insert into table (id, name, age) values(1, "A", 19) on duplicate key update name=values(name), age=values(age)
/* 插入数据:如果有重复的则选择更新; */
insert ignore into `testtable` (`mpass`,`pass`) select mpass,pass from rr_pass_0 limit 0,1000000
replace into `testtable` (`mpass`,`pass`) select mpass,pass from rr_pass_0 limit 0,10
//设置主键:如果有重复的数据选择丢弃;
select *, count(distinct name) from table group by name
//查询出重复的数据
这几天写了个导入脚本;留个笔记;
<?php
error_reporting(0);
ini_set('memory_limit', '1024M');
header('Content-type: text/html;charset=UTF-8');
$db_host = "127.0.0.1";
$db_user = "root";
$db_pass = "";
$db_database = "qq";
$table = "import_table"; //导入的库 $tables = "query_tablle"; //查询的库
//62300000,100000
$dump_num = "100"; //按照一次10W的标准;
$db = new db($db_host,$db_user,$db_pass,$db_database);
//$test = $db->query("insert into testtables (a) values ('145646464')");
$start_num =5305950 ;//开始位置;
$tables_query = $db->query("select count(*) from $tables");//查询总数
$tables_count_array = $db->sql_array($tables_query);
$tables_count_num = $tables_count_array[0];
$counts = intval($tables_count_num / $dump_num);
$counts = $counts + 1;
$counts = 10000;
for($i=0;$i<$counts;$i++){
//echo ("select `pass` from rr1_pass limit $start_num,$dump_num ")."<br \>";
$start_time = microtime(true);
$sql_oking = $db->query("select `pass` from `$tables` limit $start_num,$dump_num ");
while($sql_oking_array = $db->sql_array($sql_oking)){ $pass = $sql_oking_array['pass'];
$check = $db->query("select pass from `$table` where pass = \"$pass\" limit 0,1 ");
$check = $db->sql_nums($check); if(!empty($pass) && !$check ) {
$md5 = md5($pass);
$md5_2 = md5($pass);
$db->query("insert into $table (md5,md5_2,pass) values ('".$md5."','".$md5_2."','".$pass."') ") ;}
} $end_time = microtime(true);
$time = $end_time - $start_time ;
echo "$start_num,$dump_num db_write runtime:".$time."s\r\n";
$start_num = $start_num+$dump_num;
} class db{
private $db_host;
private $db_user;
private $db_pass;
private $db_conn;
private $db_database;
private $sql;
private $result; public function __construct($db_host,$db_user,$db_pass,$db_database,$db_conn = '' ){
$this->db_host = $db_host;
$this->db_user = $db_user;
$this->db_pass = $db_pass;
$this->db_database = $db_database;
$this->db_conn = $db_conn;
$this->connect(); }
public function connect(){ $this->db_conn = @mysql_connect($this->db_host,$this->db_user,$this->db_pass);
if(!$this->db_conn) {echo "mysql connect not okay!";} if(!mysql_select_db($this->db_database,$this->db_conn)){echo "select database not okay!";} }
public function query($sql){
$this->sql = $sql;
$result = mysql_query($this->sql,$this->db_conn);
$this->result = $result;
#if(!$this->result){echo "sql query is not okay!";} exit;
return $this->result;
}
public function sql_array($str = ''){
if($str !=''){ return mysql_fetch_array($str);}else{ return mysql_fetch_array($this->result);}
}
public function sql_nums($sql){
return mysql_num_rows($sql);
}
public function free(){
@mysql_free_result($this->result);
}
public function __destruct(){
if(!empty($this->result)){
$this->free();
}
mysql_close($this->db_conn);
}
} ?>
mysql 重复数据防止插入:)的更多相关文章
- 删除MySQL重复数据
删除MySQL重复数据 项目背景 在最近做的一个linux性能采集项目中,发现线程的程序入库很慢,再仔细定位,发现数据库里面很多冗余数据.因为在采集中,对于同一台设备,同一个时间点应该只有一个数据,然 ...
- python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)
今天在尝试用下面的python代码对MySQL进行数据的插入.更新和删除时, 突然发现代码执行成功, 通过代码查询也显示数据已经插入或更新, 但是当我在MySQL客户端通过SQL语句查询时, 数据库中 ...
- sql-- 找到重复数据并删除、有重复数据不插入或更新的处理方法
表结构: 需求:找到相同的内容并删除 方法1: 通过分组找出筛选出count大于1的数据 group by可以利用聚合函数(count. sum. avg)进行分组 having 对分组的数据进行下一 ...
- 使用hibernate与mysql时数据不能插入的原因及解决办法
1.背景 之前从没用过hibernate,因此在网上搜了一下hibernate快速入门方面的信息,最后我按照<Myeclipse Hibernate 快速入门 中文版>(CSDN,百度文库 ...
- mysql重复数据查询
假设有表test mysql> select * from test; +----+------+------+ | id | name | sex | +----+------+------+ ...
- mysql大数据量插入参考
Mysql 千万数据10秒批量插入只需三步第一步:配置my.ini文件文件中配置bulk_insert_buffer_size=120M 或者更大将insert语句的长度设为最大.Max_allowe ...
- navicat mysql导出数据 批量插入的形式
这里介绍的是mysql 相同服务器类型数据传输的高级设置 选中数据库后右键“ 转储SQL文件”默认导出的记录格式是一条条的,采用的是”完整插入语句”,格式如下 '); '); '); 这种格式保证了兼 ...
- mysql 批量数据循环插入
双重循环插入 DELIMITER ;; CREATE PROCEDURE test_insert() BEGIN DECLARE a INT DEFAULT 1; DECLARE b TINYINT ...
- Mysql重复数据查询置为空
前两天产品有个需求,相同的商品因为价格不同而分开展示,但是明细还是算一条明细,具体区分展示出商品的价格和数量信息,其他重复的商品信息要置空. 需求并不难,用程序代码循环处理就可以了.但是后面涉及到打印 ...
随机推荐
- HDU 1548 A strange lift (bfs / 最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Time Limit: 2000/1000 MS (Java/Ot ...
- 第七课第四节,T语言流程语句(版本5.0)
break语句 通常用在循环.遍历语句中.当跳出(break)语句用于循环语句中时,可使程序终止循环而执行循环后面的语句, 通常跳出 语句总是与如果语句联在一起.即满足条件时便跳出循环.可以说:跳出语 ...
- vector的应用
1.0基本操作 (1)头文件: #include<vector>; (2)创建: vector<int>vec, vector<double>vec, vector ...
- 强大的wget
转载自:http://www.cnblogs.com/lidp/archive/2010/03/02/1696447.html 需要下载某个目录下面的所有文件.命令如下 wget -c -r -np ...
- ping不通 www.baidu.com 163.com
可以试试这个命令:netsh winsock reset ping不通,但是可以上网,原因有以下几个: 1.远程主机禁止ping 2.firewall禁止ping,icmp 3.dns解析有问题 fr ...
- ASP.NET Web API 学习【转】
转自:http://www.cnblogs.com/babycool/p/3922738.html 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用J ...
- 高度平衡的二叉搜索树(AVL树)
AVL树的基本概念 AVL树是一种高度平衡的(height balanced)二叉搜索树:对每一个结点x,x的左子树与右子树的高度差(平衡因子)至多为1. 有人也许要问:为什么要有AVL树呢?它有什么 ...
- iOS中如何让TextView和TextField控件支持return键收起输入法
TextView和TextField控件是iOS中负责接收用户输入的控件,那当用户输入完成时怎么收起面板呢? 1.TextView和TextField控件获得焦点之后的第一反应就是弹出输入法面板: 2 ...
- 创建MySQL 用户
create user 'lixianming'@'localhost' identified by 'lxm123456'; grant all on art.* to 'lixianming'@' ...
- CrashHandler: java.lang.NullPointerException
08-29 20:33:47.305 20636-20636/com.tongyan.subway.inspect D/AndroidRuntime: Shutting down VM 08-29 2 ...