2015-06-19 2 views
0

Использование пакета RPostgreSQL я сделать запрос с vector в string:R, RPostgreSQL: вектор в запросе

dbGetQuery(con, "select from id_table where id_user in tmp") 

Где tmp должен быть список или вектор длины = 10k, как я могу сделать это? Благодарю.

+0

Возможно, вам понадобится динамический SQL (например, показ ответов), но будьте предельно осторожны: он может открыть вам SQL Injection. Если у вас есть утилиты массовой загрузки, вы можете попробовать сначала вставить в таблицу temp, к которой вы можете присоединиться (особенно если у вас есть много значений). –

ответ

0

Вы можете использовать paste0. Вот пример, где я беру state.abb DataSet

valid_state_logic=paste0("(",paste0("'",state.abb,"'", collapse=","),")") 

print(valid_state_logic) 
[1] "('DC','AL','AK','AZ','AR','CA','CO','CT','DE','FL','GA','HI','ID','IL','IN','IA','KS','KY','LA','ME','MD','MA','MI','MN','MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA','WV','WI','WY')" 
0

Попробуйте это:

query = sprintf("select * from id_table where id_user in (%s)", paste("'",tmp, "'",collapse=",")) 

dbGetQuery(con, query) 

Надеется, что это помогает.

Смежные вопросы