db_table_colnames.R 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #' Database table columns info
  2. #'
  3. #' Andmebaasi tabel veergude nimekiri.
  4. #' @param conf A list() of configuration variables. Default values \code{\link[ruut]{get_config}}.
  5. #' @seealso [ruut::db_connect()], [ruut::get_config()]
  6. #' @keywords database, table
  7. #' @export
  8. #' @examples
  9. #' \dontrun{
  10. #'
  11. #' config <- get_config()
  12. #' config$schema <- "public"
  13. #' config$table <- "spatial_ref_sys"
  14. #' db_table_colnames(conf = config)
  15. #'
  16. #' }
  17. db_table_colnames <- function(conf) {
  18. conn <- ruut::db_connect()
  19. q <- sprintf("SELECT
  20. pg_attribute.attname AS column_name,
  21. pg_catalog.format_type(pg_attribute.atttypid, pg_attribute.atttypmod) AS data_type
  22. FROM
  23. pg_catalog.pg_attribute
  24. INNER JOIN
  25. pg_catalog.pg_class ON pg_class.oid = pg_attribute.attrelid
  26. INNER JOIN
  27. pg_catalog.pg_namespace ON pg_namespace.oid = pg_class.relnamespace
  28. WHERE
  29. pg_attribute.attnum > 0
  30. AND NOT pg_attribute.attisdropped
  31. AND pg_namespace.nspname = '%s'
  32. AND pg_class.relname = '%s'
  33. ORDER BY
  34. attnum ASC;", conf$schema, conf$table)
  35. res <- DBI::dbGetQuery(conn, q)
  36. # Disconnect
  37. lapply(DBI::dbListConnections(RPostgreSQL::PostgreSQL()), DBI::dbDisconnect)
  38. res
  39. }