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

RパッケージRJDBCを使用したMySQLselectステートメントの列の名前変更

    私は同じ苛立たしい問題に遭遇しました。時々AS キーワードには意図した効果がありますが、そうでない場合もあります。正しく機能させるための条件を特定できませんでした。

    簡単な回答: (Simon Urbanek(RJDBCのパッケージメンテナー)、Yev、およびSebastienに感謝します!長い回答を参照してください。 )試行できることの1つは、?useOldAliasMetadataBehavior=trueを使用してJDBC接続を開くことです。 接続文字列で。例:

    drv <- JDBC("com.mysql.jdbc.Driver", "C:/JDBC/mysql-connector-java-5.1.18-bin.jar", identifier.quote="`")
    conn <- dbConnect(drv, "jdbc:mysql://server/schema?useOldAliasMetadataBehavior=true", "username", "password")
    query <- "SELECT `a` AS `b` FROM table"
    result <- dbGetQuery(conn, query)
    dbDisconnect(conn)
    

    これは私のために働くことになった! ロングアンサーで、警告を含む詳細を参照してください。

    長い答え: ビューの作成、クエリの変更、JOINステートメントの使用、JOINステートメントの使用なし、ORDERBYおよびGROUPBYステートメントの使用など、さまざまなことを試しました。クエリの一部で列の名前を変更できた理由がわかりませんでした。他の人はそうではありませんでした。

    パッケージの保守担当者(Simon Urbanek)に連絡しました。彼の発言は次のとおりです。

    次に彼は、MySQL用の最新のJDBCドライバーがあることを確認するように勧めました。私は最新バージョンを持っていました。しかし、「JDBCドライバーのバグかもしれない」と思いました。そこで、Googleでmysql jdbc driver bug aliasを検索しました。 。

    このクエリの上位の結果は、bugs.mysql.comのエントリ でした。 。 Yevは、MySQL 5.1.22を使用して、ドライバーバージョン5.0.4から5.1.5にアップグレードすると、列エイリアスが機能しなくなったと述べています。バグかどうか尋ねられました。

    Sebastienは、「いいえ、バグではありません。これ以降のすべてのバージョンのドライバーでの動作の変更が文書化されています」と回答しました。 ?useOldAliasMetadataBehavior=trueを使用することをお勧めします 、JDBCドライバーのドキュメントを引用

    警告レクター: JDBCドライバーのドキュメントには、

    これが何を意味するのかを完全に研究する時間がありませんでした。つまり、useOldAliasMetadataBehavior=trueを使用した場合のすべての影響がわかりません。 それは。自己責任。他の誰かがより多くの情報を持っていますか?



    1. クエリパフォーマンスの測定:実行プランのクエリコストと所要時間

    2. MacOSXでのOracleSQLDeveloper入門

    3. '*abc'のようなプレフィックスワイルドカードをmatch-againstで使用する方法

    4. 全体として実行するためにSQLファイルをnodejsに渡します