sql >> データベース >  >> RDS >> Mysql

RとMySQL-dbWriteTable()を使用してテーブルに書き込む前に、テーブルに行が存在するかどうかを確認します

    SQL駆動の重複排除またはR駆動の重複排除ソリューションの2つの方法のいずれかを検討してください。前者の場合、従来の LEFT JOIN...IS NULL/NOT EXISTS/NOT IN SQLクエリ。後者の場合、データフレーム内のすべてのコンテンツをインポートし、現在のdfを追加して、Rのunique()を実行します。 。ただし、後者を意図していないようですが、将来の読者のために示します。

    SQL (宛先テーブルの正確な構造を持つ一時テーブルを使用)

    # OVERWRITE TEMP EACH TIME
    dbWriteTable(con_hub, value = my_R_dataframe, 
                          name = "table2_temp", 
                          overwrite = TRUE,                        
                          row.names = FALSE)
    
    # RUN LEFT JOIN...IS NULL QUERY (COMPARE COLS --COL1, COL2, COL3-- ADD/REMOVE AS NEEDED)
    dbSendQuery(con_hub, paste0("INSERT INTO table2", 
                                " SELECT * FROM table2_temp",
                                " LEFT JOIN table2",
                                "   ON table2_temp.col1 = table2.col1", 
                                "   AND table2_temp.col2 = table2.col2",
                                "   AND table2_temp.col3 = table2.col3",
                                " WHERE table2.col1 IS NULL",
                                "   OR table2.col2 IS NULL",
                                "   OR table2.col3 IS NULL"))
    

    R (表2のデータを読み取り、リソースに過度の負担がかからないかどうかを検討します。すべての列で重複排除する場合に推奨されます)

    # RETRIEVE table2 DATA
    table2df <- dbGetQuery(con_hub, "SELECT * FROM table2")
    
    # APPEND BOTH DATAFRAMES
    stackeddf <- rbind(table2df, my_R_dataframe)
    
    # RETURN UNIQUE ROWS
    finaldf <- unique(stackeddf)
    
    # OVERWRITE DESTINATION TABLE EACH TIME
    dbWriteTable(con_hub, value = finaldf, 
                          name = "table2", 
                          overwrite = TRUE,                         
                          row.names = FALSE)
    
    # CLEAN UP ENVIRON OF UNNEEDED OBJECTS
    rm(table2df, stackeddf, finaldf)
    gc()
    



    1. データベースにアポストロフィを使用して値を保存する

    2. PostgreSQLでアクティブな接続を一覧表示するにはどうすればよいですか?

    3. 別の場所にあるOracleInstallationproductフォルダとdiagフォルダ

    4. ArrayField内のDjangoJSONField