Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

आर और माईएसक्यूएल - dbWriteTable() का उपयोग करके इसे लिखने से पहले किसी तालिका में कोई पंक्ति मौजूद है या नहीं

दो तरीकों में से एक पर विचार करें:एक एसक्यूएल-चालित डी-डुप या आर-संचालित डी-डुप समाधान। पहले के लिए, आपको एक अस्थायी, स्टेजिंग टेबल के उपयोग की आवश्यकता होगी जो क्लासिक LEFT JOIN...IS NULL/NOT EXISTS/NOT IN एसक्यूएल क्वेरी। बाद के लिए, आप सभी सामग्री को डेटाफ़्रेम में आयात करेंगे, अपने वर्तमान df को जोड़ेंगे, और R का unique() चलाएंगे। . हालांकि, ऐसा लगता है कि आप बाद के लिए इरादा नहीं रखते हैं लेकिन मैं भविष्य के पाठकों के लिए दिखाता हूं।

एसक्यूएल (गंतव्य तालिका की सटीक संरचना के साथ एक अस्थायी तालिका का उपयोग करके)

# 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"))

आर (तालिका 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql - तालिका 1 में पंक्ति सम्मिलित करना जब तालिका 2 पर विशिष्ट पंक्ति हटा दी जाती है

  2. क्या मुझे डेटाबेस का उपयोग करने वाले प्रत्येक फ़ंक्शन में एक php mysql कनेक्शन की आवश्यकता है?

  3. आप ग्राहकों को उनके Google खाते का उपयोग करके अपनी साइट में लॉग इन करने के लिए कैसे सक्षम करते हैं?

  4. अंतिम सम्मिलित आईडी वापस नहीं आ रही है

  5. MYSQL खोज में URL पैरामीटर का उपयोग करना