Hãy xem xét một trong hai cách:giải pháp de-dupe theo hướng SQL hoặc giải pháp de-dupe theo hướng R. Đối với trước đây, bạn sẽ cần sử dụng bảng dàn dựng tạm thời chạy cổ điển LEFT JOIN...IS NULL/NOT EXISTS/NOT IN
Truy vấn SQL. Đối với sau này, bạn sẽ nhập tất cả nội dung trong khung dữ liệu, nối df hiện tại của bạn và chạy unique()
của R . Tuy nhiên, có vẻ như bạn không có ý định sau nhưng tôi sẽ giới thiệu cho những độc giả trong tương lai.
SQL (sử dụng bảng tạm thời với cấu trúc chính xác của bảng đích)
# 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 (đọc trong dữ liệu table2, cân nhắc nếu không quá đánh thuế vào tài nguyên, ưu tiên nếu loại bỏ phần mềm của tất cả các cột)
# 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()