Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

R Lỗi ODBC DBI:nanodbc / nanodbc.cpp:3110:07009:[Microsoft] [ODBC Driver 13 cho SQL Server] Chỉ mục bộ mô tả không hợp lệ

Tôi cũng đã phải vật lộn với vấn đề này trong vài tháng. Tuy nhiên, tôi đã tìm ra một giải pháp có thể giúp ích cho bạn.

Tóm lại, sự cố xảy ra khi các cột văn bản nhất định không xuất hiện sau cột số nguyên / số. Khi các cột không được căn chỉnh chính xác trong truy vấn, sẽ xảy ra lỗi invalid index bị ném và kết nối của bạn có thể bị đóng băng. Vấn đề sau đó là, làm cách nào để tôi biết nên đặt nội dung gì ở cuối truy vấn của mình?

Để xác định điều này, người ta thường có thể kiểm tra một cột bằng cách sử dụng class() hoặc typeof() . Để kiểm tra thông tin như vậy từ cơ sở dữ liệu, bạn có thể sử dụng truy vấn như:

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

Điều này sẽ trả về một bảng có trường loại cho mọi cột trong tập dữ liệu quan tâm. Sau đó, bạn có thể sử dụng bảng này làm chỉ mục để sắp xếp select() tuyên bố. Khó khăn cụ thể của tôi là type trường trong bảng là tất cả các số! Tuy nhiên, tôi nhận thấy rằng mọi cột có số âm, khi được đặt ở cuối câu lệnh select, đã sửa truy vấn của tôi và tôi có thể kéo toàn bộ bảng tốt. Ví dụ: giải pháp đầy đủ của tôi :

# 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)))

Về lý do tại sao điều này xảy ra, tôi không chắc và tôi không có đặc quyền truy cập dữ liệu để tìm hiểu sâu hơn về trường hợp sử dụng của mình



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016

  2. Lỗi tên cột không rõ ràng trên một máy chủ cụ thể

  3. 3 cách để lấy kiểu dữ liệu của cột trong SQL Server (T-SQL)

  4. Cách lấy thông tin thống kê của máy chủ SQL bằng chức năng thống kê hệ thống

  5. SQL Server - Giá trị trả về sau khi CHÈN