sql >> データベース >  >> RDS >> Sqlserver

R DBI ODBCエラー:nanodbc / nanodbc.cpp:3110:07009:[Microsoft][SQLServer用のODBCドライバー13]無効な記述子インデックス

    私もこの問題に数ヶ月苦労しています。しかし、私はあなたにも役立つかもしれない解決策に出くわしました。

    一言で言えば、この問題は、特定のテキスト列が整数/数値列の後に表示されない場合に発生します。クエリで列が適切に配置されていない場合、invalid indexのエラーが発生します がスローされ、接続がフリーズする可能性があります。 問題は、クエリの最後に何を入力するかをどのように知るかです。

    これを判断するには、通常、class()を使用して列を調べることができます。 またはtypeof() 。データベースからこのような情報を調べるには、次のようなクエリを使用できます。

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

    これにより、対象のデータセットのすべての列のタイプフィールドを含むテーブルが返されます。次に、このテーブルをインデックスとして使用して、select()を並べ替えることができます。 声明。私の特に難しいのは、type 表のフィールドはすべて数字でした!ただし、selectステートメントの最後に配置すると、負の数のすべての列がクエリを修正し、テーブル全体を正常にプルできることに気付きました。たとえば、私の完全なソリューション

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

    これが発生する理由については、よくわかりません。また、ユースケースをさらに深く掘り下げるためのデータアクセス権限がありません



    1. INTとVARCHARの主キーの間に実際のパフォーマンスの違いはありますか?

    2. Excel VBAスクリプトからOracleストアドプロシージャを呼び出すにはどうすればよいですか?

    3. MariaDBで先行ゼロで数値を埋める方法

    4. データの視覚化