Narzędzia użytkownika

Narzędzia witryny


ewdprocedury_pobieranie_bazy_szkol

To jest stara wersja strony!


Eksport z bazy danych o szkołach

rodzajSzkoly  = "rodzaj"           # dozwolone wartości: "gimn.", "LO", "LP", "T"
zapiszDlugi   = "nazwa_pliku_csv"  # wpisać, lub NULL jeśli plik w formacie szerokim ma nie być zapisywany
zapiszSzeroki = "nazwa_pliku_csv"  # wpisać, lub NULL jeśli plik w formacie szerokim ma nie być zapisywany
zrodloODBC    = "EWD"              # dostosować

library(RODBCext)
setwd("setwd("~/Desktop/")

dozwoloneRodzaje = c("gimn.", "LO", "LP", "T")
przyrostki       = c("g"    , "lo", "lo", "t")
if (rodzajSzkoly %in% dozwoloneRodzaje) {
  przyr = przyrostki[dozwoloneRodzaje == rodzajSzkoly]
  # samo pobieranie
  p = odbcConnect(zrodloODBC)
  szkoly = sqlExecute(
    p,
    "SELECT rok, id_szkoly AS id_szkoly_strona, id_szkoly_ewd, id_szkoly_oke,
      typ_szkoly, publiczna, dla_doroslych, specjalna, przyszpitalna,
      nazwa, adres, miejscowosc, pna, poczta, wielkosc_miejscowosci AS l_mieszk,
      id_wojewodztwa AS wojewodztwo, id_powiatu AS powiat, id_gminy AS gmina,
      matura_miedzynarodowa AS ib
    FROM (SELECT * FROM szkoly WHERE typ_szkoly = ?) AS szkoly
      JOIN szkoly_dane USING (id_szkoly)
    WHERE id_szkoly > 0 AND rok > 2005
    ORDER BY id_szkoly_ewd, rok;",
    rodzajSzkoly,
    fetch=T, stringsAsFactors=F
  )
  odbcClose(p)
  
  # trochę ręcznego tuningu z nazwami zmiennych (do stylu "dawno temu, przed bazą SQL")
  names(szkoly) = sub("id_szkoly_ewd", paste0("id_" , przyr), names(szkoly))
  names(szkoly) = sub("id_szkoly_oke", paste0("kod_", przyr), names(szkoly))
  # matura międzynarodowa nie ma nic wspólnego z gimnazjami
  if (rodzajSzkoly=="gimn.") szkoly = szkoly[, names(szkoly) != "ib"]
  # TERYT w jedną zmienną
  szkoly = within(szkoly, {teryt = 10000 * wojewodztwo + 100 * powiat + gmina})
  szkoly = szkoly[, !(names(szkoly) %in% c("powiat", "gmina"))]
  # jeśli pobieramy technika, typ szkoły może być uznany za zmienną logiczną
  if (is.logical(szkoly$typ_szkoly)) szkoly$typ_szkoly = "T"

  # ew. zapis formy długiej
  if (!is.null(zapiszDlugi)) write.csv2(zapiszDlugi, row.names=FALSE, na="", fileEncoding="UTF-8")
  
  # przekształcenie do postaci szerokiej
}


ewdprocedury_pobieranie_bazy_szkol.1406829004.txt.gz · ostatnio zmienione: 2014/07/31 19:50 przez t.zoltak