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 重复数据防止插入:)的更多相关文章

  1. 删除MySQL重复数据

    删除MySQL重复数据 项目背景 在最近做的一个linux性能采集项目中,发现线程的程序入库很慢,再仔细定位,发现数据库里面很多冗余数据.因为在采集中,对于同一台设备,同一个时间点应该只有一个数据,然 ...

  2. python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)

    今天在尝试用下面的python代码对MySQL进行数据的插入.更新和删除时, 突然发现代码执行成功, 通过代码查询也显示数据已经插入或更新, 但是当我在MySQL客户端通过SQL语句查询时, 数据库中 ...

  3. sql-- 找到重复数据并删除、有重复数据不插入或更新的处理方法

    表结构: 需求:找到相同的内容并删除 方法1: 通过分组找出筛选出count大于1的数据 group by可以利用聚合函数(count. sum. avg)进行分组 having 对分组的数据进行下一 ...

  4. 使用hibernate与mysql时数据不能插入的原因及解决办法

    1.背景 之前从没用过hibernate,因此在网上搜了一下hibernate快速入门方面的信息,最后我按照<Myeclipse Hibernate 快速入门 中文版>(CSDN,百度文库 ...

  5. mysql重复数据查询

    假设有表test mysql> select * from test; +----+------+------+ | id | name | sex | +----+------+------+ ...

  6. mysql大数据量插入参考

    Mysql 千万数据10秒批量插入只需三步第一步:配置my.ini文件文件中配置bulk_insert_buffer_size=120M 或者更大将insert语句的长度设为最大.Max_allowe ...

  7. navicat mysql导出数据 批量插入的形式

    这里介绍的是mysql 相同服务器类型数据传输的高级设置 选中数据库后右键“ 转储SQL文件”默认导出的记录格式是一条条的,采用的是”完整插入语句”,格式如下 '); '); '); 这种格式保证了兼 ...

  8. mysql 批量数据循环插入

    双重循环插入 DELIMITER ;; CREATE PROCEDURE test_insert() BEGIN DECLARE a INT DEFAULT 1; DECLARE b TINYINT ...

  9. Mysql重复数据查询置为空

    前两天产品有个需求,相同的商品因为价格不同而分开展示,但是明细还是算一条明细,具体区分展示出商品的价格和数量信息,其他重复的商品信息要置空. 需求并不难,用程序代码循环处理就可以了.但是后面涉及到打印 ...

随机推荐

  1. 12-16php测试题

    2. 以下哪个SQL语句是正确的( d )A:insert into users ('p001','张三','男'); B:create table (Code int primary key); C ...

  2. 限制文本框只能输入数字或浮点数的JS脚步

    1.oninput,onpropertychange,onchange的用法 l          onchange触发事件必须满足两个条件: a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本 ...

  3. 任务太多,时间太少,GT凶猛,不留情面啊。。。

    最近由于提高了发现资料的效率及方法,于是得到了很多好的资料,也打印了好多资料!可是,我突然发现自己好像要做的事太多了,一时间没有了头绪.今天花点时间写个博客,整理一下最近杂乱的状态,看看到底该如何调配 ...

  4. hdu4737 A Bit Fun ——O(n)做法、错误的做法 + 正确做法

    囧== 下面的做法是错误的.下午在路上突然明白了== 哎,到现在还是只知道暴力的做法,囧爆了:http://www.cnblogs.com/liuxueyang/p/3322197.html 类似于前 ...

  5. OpenMP对于嵌套循环应该添加多少个parallel for 分类: OpenMP C/C++ Linux 2015-04-27 14:48 53人阅读 评论(0) 收藏

    一个原则是:应该尽量少的使用parallelfor, 因为parallel for也需要时间开销.即: (1)如果外层循环次数远远小于内层循环次数,内层循环较多时,将parallel for加在内层循 ...

  6. (MST) HDOJ 1102 Constructing Roads

    怎么说呢 这题就是个模板题 但是 hud你妹夫啊说好的只有一组数据呢??? 嗯??? wa到家都不认识了好吗 #include <cstdio> #include <cstring& ...

  7. Java引用总结--StrongReference、SoftReference、WeakReference、PhantomReference

    Java引用总结--StrongReference.SoftReference.WeakReference.PhantomReference 1 Java引用介绍 Java从1.2版本开始引入了4种引 ...

  8. selenium加载时间过长

    为了获取网站js渲染后的html,需要利用selenium加载网站,但是会出现加载时间过长的现象,因此可以限制其加载时间以及强制关掉加载: # !/usr/bin/python3.4 # -*- co ...

  9. How to Allow MySQL Client to Connect to Remote MySql

    How to Allow MySQL Client to Connect to Remote MySQ By default, MySQL does not allow remote clients ...

  10. pt-find 使用实例

    pt-find - Find MySQL tables and execute actions, like GNU find. 用法:pt-find [OPTION...] [DATABASE...] ...