如何在向数据库插入数据时避免重复

2024-09-28 22:25:45 发布

您现在位置:Python中文网/ 问答频道 /正文

从excel向sql数据库插入值时出现重复问题。在我的数据库中有一个包含15列的表。我的问题:

INSERT INTO sanction (
                id,
                organization_type, organization, date,
                decision_number, penalty_type, penalty_way,
                penalty, violation, execution_period,
                article, note, type_npa,
                department, uploaded_date)
                VALUES (
                null,
                   %s, %s, STR_TO_DATE(%s,"%%d.%%m.%%Y"),
                %s, %s, %s,
                %s, %s, STR_TO_DATE(%s,"%%d.%%m.%%Y"),
                %s, %s, %s,
                %s, %s)

尝试如果不存在,唯一没有帮助。有人能帮我问一下吗?希望在不创建临时表和uniques的情况下使用它。 谢谢!你知道吗


Tags: toid数据库sqldatetypeexcelinsert
1条回答
网友
1楼 · 发布于 2024-09-28 22:25:45

我敢肯定,您不会知道数据帧中的数据是否复制了数据库中的某些记录,至少在您将数据集推入数据库之前是这样。如果要对数据帧进行重复数据消除,可以这样做。你知道吗

df.drop_duplicates()

import pandas as pd
raw_data = {'first_name': ['Jason', 'Jason', 'Jason','Tina', 'Jake', 'Amy'], 
        'last_name': ['Miller', 'Miller', 'Miller','Ali', 'Milner', 'Cooze'], 
        'age': [42, 42, 42, 36, 24, 73], 
        'preTestScore': [4, 4, 4, 31, 2, 3],
        'postTestScore': [25, 25, 25, 57, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])
print(df)


df = df.drop_duplicates(['last_name'], keep='first')
print(df)

或者,在插入过程中测试重复。我发现了一些样品,也许对你有帮助。如果您使用的是SQL Server。。。你知道吗

Using NOT EXISTS:

INSERT INTO TABLE_2
  (id, name)
SELECT t1.id,
       t1.name
  FROM TABLE_1 t1
 WHERE NOT EXISTS(SELECT id
                    FROM TABLE_2 t2
                   WHERE t2.id = t1.id)

Using NOT IN:

INSERT INTO TABLE_2
  (id, name)
SELECT t1.id,
       t1.name
  FROM TABLE_1 t1
 WHERE t1.id NOT IN (SELECT id
                       FROM TABLE_2)

Avoid duplicates in INSERT INTO SELECT query in SQL Server

或者,如果您已经在使用Excel,可以考虑使用VBA来实现这类功能。你知道吗

相关问题 更多 >