sql >> Database teknologi >  >> RDS >> Sqlserver

R DBI ODBC-fejl:nanodbc/nanodbc.cpp:3110:07009:[Microsoft][ODBC-driver 13 til SQL Server]Ugyldigt deskriptorindeks

Jeg har også kæmpet med dette problem i flere måneder. Jeg er dog stødt på en løsning, der måske også kan hjælpe dig.

I en nøddeskal opstår problemet, når visse tekstkolonner ikke vises efter heltal/numeriske kolonner. Når kolonnerne ikke er justeret korrekt i forespørgslen, vises en fejl med invalid index er smidt, og din forbindelse kan fryse. Spørgsmålet er så, hvordan ved jeg, hvad jeg skal sætte i slutningen af ​​min forespørgsel?

For at bestemme dette kunne man typisk undersøge en kolonne ved hjælp af class() eller typeof() . For at undersøge sådanne oplysninger fra databasen kan du bruge en forespørgsel som:

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

Dette vil returnere en tabel med et typefelt for hver kolonne i datasættet af interesse. Du kan derefter bruge denne tabel som et indeks til at sortere select() udmelding. Mit særlige problem er, at type felt i tabellen var alle tal! Jeg bemærkede dog, at hver kolonne med et negativt tal, når den blev placeret i slutningen af ​​select-sætningen, fiksede min forespørgsel, og jeg kunne fint trække hele tabellen. For eksempel min fulde 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)))

Hvad angår årsagen til, hvorfor dette sker, er jeg ikke sikker, og jeg har ikke dataadgangsrettigheder til at grave meget dybere i min use-case



  1. Få en liste over alle funktioner og procedurer i en Oracle-database

  2. MariaDB DATABASE() Forklaret

  3. Tilslut ODBC-applikationer på Windows til Zoho CRM

  4. returnere værdi ved en position fra STRING_SPLIT i SQL Server 2016