Используя R, есть ли способ запросить строки файла SQL, используя вектор из одного столбца чисел? - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь получить запрос строк файла SQL на R на основе вектора столбца, который у меня уже есть. Файл sql содержит столбец идентификаторов, в то время как остальные содержат информацию, основанную на идентификаторе. У меня есть отдельный вектор идентификаторов, которые меня интересуют, и мне интересно, есть ли способ запросить строки информации и идентификатора на основе вектора идентификаторов, которые у меня есть.

Я пытался

mydb <- dbConnect(RSQLite::SQLite(), "name.db") 

x = dbGetQuery(mydb, 'SELECT ID FROM table;')

и он получает все идентификаторы, но я просто хочу получить конкретные идентификаторы на основе вектора. Я не могу просто ввести туда символьный вектор, потому что у меня большой объем данных.

a <- c(100,102,103,104..)



mydb <- dbConnect(RSQLite::SQLite(), "name.db") 

x = dbGetQuery(mydb, 'SELECT ID FROM table==a ;')

Это не только дает мне идентификаторы тех, которые я хочу

Есть ли способ запрашивать строки, основанные на векторе одного столбца, который имеет желаемые идентификаторы? Можем ли мы заставить систему выводить только те строки, которые содержат идентификаторы, соответствующие вектору, который мы ей даем?

1 Ответ

1 голос
/ 04 июня 2019

SQL-запрос - это символьная строка кода SQL.Вам просто нужно построить запрос, который вы хотите, используя код R:

Примерно так:

a = 100:104
my_query = paste("SELECT ID FROM TABLE WHERE ID IN (", toString(a), ")")
my_query
# "SELECT ID FROM TABLE WHERE ID IN ( 100, 101, 102, 103, 104 )"

x = dbGetQuery(mydb, my_query)

toString разделяет ввод запятой, что здесь уместно.sprintf() использует синтаксис «заполняй пустые», который часто более читабелен, чем paste() для таких вещей:

my_q = sprintf("SELECT ID FROM TABLE WHERE ID IN (%s)", toString(a))
my_q
# [1] "SELECT ID FROM TABLE WHERE ID IN (100, 101, 102, 103, 104)"
...