Я пытаюсь записать фрейм данных, используя R для Teradata. Фрейм данных имеет широкий формат (более 100 столбцов), и запись в Teradata подразумевает объявление как имени, так и класса каждой переменной. Обратите внимание, что приведенные ниже данные служат только в качестве примера.
iris$integerRandom <- seq_along(iris$Sepal.Length)
iris$Dates <- seq.Date(as.Date("2018-01-01"), by = "d", length.out = nrow(iris))
iris$Dates2 <- seq.Date(as.Date("2019-01-01"), by = "d", length.out = nrow(iris))
iris$Species <- as.character(iris$Species)
iris$characterRandom <- sample(letters, nrow(iris), replace = TRUE)
## Getting Numeric and Integer Names first
names_num <- names(iris)[which(sapply(iris, class) %in% c("integer", "numeric"))]
names_date <- names(iris)[which(sapply(iris, class) %in% "Date")]
names_character <- names(iris)[which(sapply(iris, class) %in% "character")]
## Generating variable names with corresponding variable types
paste(gsub("varchar(300)", '"varchar(300)"', gsub(",", " = varchar(300), ", toString(names_character))), "varchar(300)", sep = " = ")
paste(gsub(",", " = date", toString(names_date)), " = date")
paste(gsub("varchar(300)", '"float"', gsub(",", " = float, ", toString(names_num))), "float", sep = " = ")
В идеале, я хотел бы, чтобы желаемый результат сказал
Species = "varchar (300)", characterRandom = "varchar (300)" и так далее. Обратите внимание, что порядок, в котором переменные важны, так как порядок имеет значение при объявлении имен и типов в Teradata (или в данном случае SQL), код, вероятно, будет работать для обоих инструментов. Таким образом, порядок имен переменных вместе с
Sepal.Длина и конец с характером Random.