Programim dhe zhvillim, javascript, python, php, html

Të nxirren të dhëna nga një tabelë SQL Server dhe të ruhen si skedarë të shumtë CSV?

Po përpiqem të kuptoj se si të nxjerr të dhëna nga një tabelë SQL Server dhe të ruaj përmbajtjen e një tabele, në skedarë të veçantë CSV, bazuar në një fushë të quajtur ASOFDATE. ASOFDATE ime është një datë e përfundimit të muajit.

Ja çfarë kam deri tani.

library(RODBC)

# connect to database 
dbhandle = odbcDriverConnect('driver={SQL Server};server=SERVER_NAME;database=DATABASE_NAME;trusted_connection=true')

sampledata <- sqlQuery(dbhandle, "select * from [SERVER].[dbo].[TABLE]")

# Close the connection
close(dbhandle) 

# Create a Date vector containing the 1st of all the subsequent months and subtract 1 day 
# date.end.month <- seq(as.Date("2012-02-01"),length=4,by="months")-1

ASOFDATE <- seq(as.Date("2016-02-01"),length=12,by="months")-1

Disi këtu mendoj se duhet të kaloj nëpër DataFrame, por nuk jam i sigurt se si ta bëj.

for (i in sampledata) {
  do some kind of filter by ASAOFDATE

write.csv(sampledata, paste0("C:/Users/RSMITH/Desktop/test/", ASOFDATE, ".csv"), row.names = FALSE) 

}

Kështu, për shembull, unë e përdor këtë për të marrë të dhëna nga tabela.

grupi i të dhënave ‹- sqlFetch(dbhandle, "DATA")

Grupi i të dhënave ka këto fusha: N_ID,SEQ_NO,REPORT_PERIOD_END,CONTACT_ID,CONSOL_KEY,CUSTOMER_NAME,COMPANY_CODE,SECTOR,OFFICER,ASOFDATE,COMPANY,REPORT_LINE

Unë krijoj një listë me datat e fundit të muajit që dua të 'filtroj' për: ASOFDATE ‹- seq(as.Date("2016-02-01"),length=12,by="muaj")-1

Më pas, 'filtro' regjistrimet në tabelë, bazuar në ASOFDATE, dhe ruani secilën pjesë si një CSV, me datën në emrin e skedarit.

Jam 100% i sigurt se kjo është e mundur, por thjesht nuk di si t'i ndaj të dhënat në copa dhe të ruaj çdo pjesë.

r
25.05.2017

  • Pra, dëshironi të gjitha regjistrimet para çdo ASOFDATE në skedarë të veçantë csv? Apo dëshironi që ato të përmbajnë të gjitha të dhënat midis dy ASOFDATE-ve? 26.05.2017
  • Në çdo rast, duhet të jepni një pjesë të të dhënave tuaja për të ilustruar problemin. Shikoni këtë postim se si ta bëni: stackoverflow.com/questions/5963269/ 26.05.2017

Përgjigjet:


1

Ju mund të përdorni tidyverse këtu. Së pari ju krijoni një vektor të shtigjeve ku do të ruani skedarët tuaj. Pastaj i ndani të dhënat tuaja në list, sipas ASOFDATE, dhe walk përgjatë kësaj liste, duke ruajtur elementët e listës gjatë rrugës.

library(tidyverse)

paths <- paste0("Desktop/", sampledata$ASOFDATE, ".csv")

sampledata %>% 
  split(.$ASOFDATE) %>% 
  walk2(., paths, ~write_csv(.x, .y))

Të dhënat

sampledata <- data_frame(
  ASOFDATE = seq(from = as.Date("2017-05-01"), as.Date("2017-05-05"), "days"),
  var1 = 1:5,
  var2 = 1:5
)
25.05.2017
  • Faleminderit, shembulli juaj specifik funksionon, por si mund ta përshtat atë me skenarin tim? Po marr të dhënat nga tabela: grupi i të dhënave ‹- sqlFetch(dbhandle, TABLE_NAME). Tani, më duhet ta përdor atë në DataFrame: mostra data ‹- data_frame(...) 26.05.2017
  • @ryguy72 A mund ta përditësoni postimin tuaj me një mostër të rezultatit tuaj nga sqlFetch(dbhandle, "TABLE_NAME")? Për mënyrën se si ta bëni këtë, shihni këtu. 26.05.2017
  • Sapo shtova disa informacione të tjera në postimin tim origjinal. 26.05.2017
  • @ryguy72 është ende pak e rrallë. Si duket kolona juaj ASOFDATE brenda dataset? Pse nuk mund ta përdorni siç sugjerova? dataset %>% split(.$ASOFDATE) %>% ... 26.05.2017
  • @ryguy72 Nëse keni një kolonë brenda të dhënave tuaja, e cila përcakton pjesët për ruajtje, atëherë nuk keni nevojë të krijoni asgjë tjetër jashtë dataset tuaj. 26.05.2017
  • Mendoj se nuk e njoh mirë R-në për ta kuptuar këtë. Kur ekzekutoj këtë: grupi i të dhënave %›% split(.$ASOFDATE) %›% walk2(., paths, ~write_csv(.x, .y)) Ai futet në një lloj cikli të përhershëm dhe unë marr 2 skedarë CSV; një me datën e djeshme dhe një që quhet 'NA'. Të dy kanë TËRË përmbajtjen e tabelës. Ky është problemi tani. 26.05.2017
  • A mund të bëni 'head(dataset$ASOFDATE)' ose 'unike(dataset$ASOFDATE)' dhe të postoni rezultatin? Derisa të mos e bëni shembullin tuaj të riprodhueshëm (kam postuar dy herë lidhjen se si ta bëni këtë) është e vështirë t'ju ndihmoj. 26.05.2017
  • › koka(seti i të dhënave$ASOFDATE) [1] 2017-05-25 EDT 2017-05-25 EDT 2017-05-25 EDT NA 2017-05-25 EDT 2017-05-25 EDT › unike(FDATE)$1 ] 2017-05-25 EDT NA 26.05.2017
  • Pra, keni vetëm të dhëna për një ditë (dhe disa të dhëna që mungojnë për datat)? Çfarë tjetër, atëherë, do të ishte prodhimi juaj i dëshiruar, se dy skedarë? Nëse dëshironi ndonjë ndihmë të mëtejshme, vërtet duhet të krijoni një shembull të riprodhueshëm, i cili tregon qartë se si duken të dhënat hyrëse dhe cili është dalja/rezultati i dëshirave tuaja. 26.05.2017
  • AHHHH! Tani e shoh se cili ishte problemi. Mendova se po godisja një tavolinë tjetër! Gjithçka gati tani. Faleminderit për gjithë ndihmën për këtë. E vleresoj. 26.05.2017
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..