sql >> Database >  >> RDS >> Mysql

Kolommen hernoemen in een MySQL select-statement met R-pakket RJDBC

Ik ben tegen hetzelfde frustrerende probleem aangelopen. Soms is de AS zoekwoord zou het beoogde effect hebben, maar andere keren niet. Ik kon de voorwaarden niet identificeren om het correct te laten werken.

Kort antwoord: (Met dank aan Simon Urbanek (pakketbeheerder voor RJDBC), Yev en Sebastien! Zie het Lange antwoord. ) Een ding dat u kunt proberen, is uw JDBC-verbinding te openen met ?useOldAliasMetadataBehavior=true in uw verbindingsreeks. Voorbeeld:

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)

Dit werkte uiteindelijk voor mij! Bekijk meer details, inclusief kanttekeningen, in het Lange antwoord

Lang antwoord: Ik heb van alles geprobeerd, inclusief het maken van views, het wijzigen van query's, het gebruik van JOIN-instructies, het NIET gebruiken van JOIN-statements, het gebruik van ORDER BY en GROUP BY-statements, enz. Ik heb nooit kunnen achterhalen waarom sommige van mijn query's de naam van kolommen konden wijzigen en anderen niet.

Ik heb contact opgenomen met de pakketbeheerder (Simon Urbanek.) Dit is wat hij zei:

Vervolgens raadde hij me aan ervoor te zorgen dat ik de meest recente JDBC-driver voor MySQL had. Ik had wel de meest recente versie. Het zette me echter aan het denken "misschien IS het een bug met het JDBC-stuurprogramma." Dus zocht ik op Google naar:mysql jdbc driver bug alias .

Het beste resultaat voor deze zoekopdracht was een bericht op bugs.mysql.com . Yev, die MySQL 5.1.22 gebruikt, zegt dat toen hij een upgrade uitvoerde van stuurprogrammaversie 5.0.4 naar 5.1.5, zijn kolomaliassen niet meer werkten. Gevraagd of het een bug was.

Sebastien antwoordde:"Nee, het is geen bug! Het is een gedocumenteerde gedragsverandering in alle volgende versies van het stuurprogramma." en stelde voor om ?useOldAliasMetadataBehavior=true . te gebruiken , onder verwijzing naar documentatie voor het JDBC-stuurprogramma .

Voorbehoud lector: In de documentatie voor het JDBC-stuurprogramma staat dat

Ik heb niet de tijd gehad om volledig te onderzoeken wat dit betekent. Met andere woorden, ik weet niet wat alle gevolgen zijn van het gebruik van useOldAliasMetadataBehavior=true zijn. Gebruik op eigen risico. Heeft iemand anders meer informatie?



  1. T-SQL-bugs, valkuilen en best practices – joins

  2. Nieuw gebruikers- en LDAP-beheer in ClusterControl 1.8.2

  3. MySQL-fout 1118 (rijgrootte te groot) bij het herstellen van de Django-mailer-database

  4. Hoe COLLATION() werkt in MariaDB