sql >> Databasteknik >  >> RDS >> Sqlserver

R DBI ODBC-fel:nanodbc/nanodbc.cpp:3110:07009:[Microsoft][ODBC-drivrutin 13 för SQL Server]Ogiltigt deskriptorindex

Jag har också kämpat med det här problemet i flera månader. Men jag har hittat en lösning som kan hjälpa dig också.

I ett nötskal uppstår problemet när vissa textkolumner inte visas efter heltals/numeriska kolumner. När kolumnerna inte är korrekt justerade i frågan uppstår ett fel med invalid index slängs och din anslutning kan frysa. Frågan är då, hur vet jag vad jag ska sätta i slutet av min fråga?

För att fastställa detta kan man vanligtvis undersöka en kolumn med class() eller typeof() . För att undersöka sådan information från databasen kan du använda en fråga som:

dbColumnInfo(dbSendQuery(con, "SELECT * from schema.table")) # You may not require the schema part...

Detta kommer att returnera en tabell med ett typfält för varje kolumn i datauppsättningen av intresse. Du kan sedan använda den här tabellen som ett index för att sortera select() påstående. Min speciella svårighet är att type fältet i tabellen var alla siffror! Men jag märkte att varje kolumn med ett negativt tal, när den placerades i slutet av select-satsen, fixade min fråga och jag kunde dra hela tabellen bra. Till exempel min fullständiga lösning :

# Create my index of column types (ref to the current order)
index <- dbColumnInfo(dbSendQuery(con, "SELECT * from schema.table"))
index$type <- as.integer(index$type) # B/c they are + and - numbers!

# Create the ref to the table
mySQLTbl <- tbl(con, in_schema("schema", "tablename"))

# Use the select statement to put all the + numbered columns first!
mySQLTbl %>%
  select(c(which(index$type>=0),
                 which(index$type<0)))

När det gäller anledningen till varför detta inträffar är jag inte säker och jag har inte dataåtkomstprivilegier för att gräva mycket djupare i mitt användningsfall



  1. Hur man skapar en skrivskyddad användare i PostgreSQL

  2. Hur får man tillgång till Oracle-databasen över nätverket?

  3. Laravel Eloquent vs frågebyggare - Varför använda vältalig för att minska prestandan

  4. Betydelsen av transaktionslogg i SQL Server