Mi tabla de base de datos se ve aproximadamente así:RODBC: SQLUpdate() no reconoce columna de índice
+-----+-------+--------------------+-----------+----------+
| ID1 | ID2 | FilePath1 | FilePath2 | Status |
+-----+-------+--------------------+-----------+----------+
| 1 | Test1 | MyFolder\R\Folder1 | NULL | Open |
| 2 | Test2 | MyFolder\R\Folder2 | NULL | Open |
| 3 | Test3 | MyFolder\R\Folder3 | NULL | Finished |
| 4 | Test4 | MyFolder\R\Folder4 | NULL | Finished |
+-----+-------+--------------------+-----------+----------+
La primera columna (ID1) se define como PK. Sin embargo, ID2 también es único.
Ahora me gustaría poder cambiar FilePath2
y Status
con R usando sqlUpdate()
del paquete RODBC
. Así que trato de los siguientes:
db.df <- data.frame(ID1=1, ID2='Test1',
FilePath2='MyFolder\R\Folder5', Status='Finished',
stringsAsFactors=FALSE)
sqlUpdate(myconn, db.df, tablename='mytable', index='ID2', verbose=TRUE)
que db.df
es una trama de datos con los nombres de una sola fila y columna correspondientes a los de la tabla de base de datos (sin embargo, les dejo algunas de las columnas, en este caso FilePath1
, y yo También preferiría omitir ID1
, si es posible). Mi objetivo es conseguir la siguiente:
+-----+-------+--------------------+--------------------+----------+
| ID1 | ID2 | FilePath1 | FilePath2 | Status |
+-----+-------+--------------------+--------------------+----------+
| 1 | Test1 | MyFolder\R\Folder1 | MyFolder\R\Folder5 | Finished |
| 2 | Test2 | MyFolder\R\Folder2 | NULL | Open |
| 3 | Test3 | MyFolder\R\Folder3 | NULL | Finished |
| 4 | Test4 | MyFolder\R\Folder4 | NULL | Finished |
+-----+-------+--------------------+--------------------+----------+
consigo el error siguientes iniciales:
Error in sqlUpdate(myconn, db.df, tablename = 'mytable', index = 'ID2', :
index column(s) ID2 not in database table
Cuál podría ser la razón para este problema?
EDIT: He pasa por alto el problema mediante el envío de una consulta SQL directa:
out.path <- 'MyFolder\\\\R\\\\Folder5'
update.query <- paste("UPDATE mytable ",
"SET FilePath2='", out.path, "', Status='Finished' ",
"WHERE ID2='Test1'", sep="")
dummy <- sqlQuery(myconn, update.query)
Aunque esto podría no ser una forma elegante, que hace lo que debe hacer. Sin embargo, todavía no entiendo cuál es el problema con sqlUpdate
, así que espero que alguien pueda aclararlo.