mysql数据库插入之前判断数据是不是存在?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库插入之前判断数据是不是存在?相关的知识,希望对你有一定的参考价值。

参考技术A select count(name) from 表 where name=\'阿飞\'\\x0d\\x0aif(count>=1)//当count大于等于1,那么就说明已经存在阿飞了\\x0d\\x0a\\x0d\\x0a //这里也就不用写啥代码了\\x0d\\x0a\\x0d\\x0aelse\\x0d\\x0a\\x0d\\x0a insert into 表(name) values(\'阿飞\');\\x0d\\x0a

在插入 BigQuery 表之前检查数据是不是已经存在(使用 Python)

【中文标题】在插入 BigQuery 表之前检查数据是不是已经存在(使用 Python)【英文标题】:Check if data already exists before inserting into BigQuery table (using Python)在插入 BigQuery 表之前检查数据是否已经存在(使用 Python) 【发布时间】:2016-10-04 13:34:59 【问题描述】:

我正在设置一个每日 cron 作业,该作业将一行附加到 BigQuery 表(使用 Python),但是,正在插入重复数据。我在网上搜索过,我知道有一种手动remove duplicate 数据的方法,但我想看看我是否可以首先避免这种重复。

有没有办法检查 BigQuery 表以查看数据记录是否已经存在首先以避免插入重复数据?谢谢。

代码片段:

import webapp2
import logging
from googleapiclient import discovery
from oath2client.client import GoogleCredentials

PROJECT_ID = 'foo'
DATASET_ID = 'bar'
TABLE_ID = 'foo_bar_table’

class UpdateTableHandler(webapp2.RequestHandler):
    def get(self):
        credentials = GoogleCredentials.get_application_default()
        service = discovery.build('bigquery', 'v2', credentials=credentials)

    try:

     the_fruits = Stuff.query(Stuff.fruitTotal >= 5).filter(Stuff.fruitColor == 'orange').fetch();

     for fruit in the_fruits:
       #some code here

     basket = dict()
     basket['id'] = fruit.fruitId
     basket['Total'] = fruit.fruitTotal
     basket['PrimaryVitamin'] = fruit.fruitVitamin
     basket['SafeRaw'] = fruit.fruitEdibleRaw
     basket['Color'] = fruit.fruitColor
     basket['Country'] = fruit.fruitCountry

            body = 
                'rows': [
                    
                        'json': basket,
                        'insertId': str(uuid.uuid4())
                    
                ]
            

            response = bigquery_service.tabledata().insertAll(projectId=PROJECT_ID,
                                                              datasetId=DATASET_ID,
                                                              tableId=TABLE_ID,
                                                              body=body).execute(num_retries=5)
            logging.info(response)

    except Exception, e:
        logging.error(e)

app = webapp2.WSGIApplication([
    ('/update_table', UpdateTableHandler),
], debug=True)

【问题讨论】:

似乎搜索会很昂贵,除非数据在过去 24 小时内,然后仅搜索该分区。 【参考方案1】:

测试数据是否已经存在的唯一方法是运行查询。

如果表中有大量数据,则该查询可能会很昂贵,因此在大多数情况下,我们建议您继续插入重复项,然后稍后合并重复项。

正如 Zig Mandel 在评论中建议的那样,如果您知道希望看到记录的日期,则可以查询日期分区,但与插入和删除重复项相比,这可能仍然很昂贵。

【讨论】:

以上是关于mysql数据库插入之前判断数据是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

mysql插入数据时,判断是不是存在,存在则替代,不存在则直接插入,需要能够批量处理。

关于向mysql数据库中插入数据时,判断是不是进行插入的问题

SQL 插入之前怎么判断数据库已经存在

mysql 添加数据判断是不是重复添加

如何判断某个mysql数据库是不是已存在

如何在插入 MySQL 之前检查表中是不是存在名称 [重复]