Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zmiana nazw kolumn w instrukcji Select MySQL z pakietem R RJDBC

Natknąłem się na ten sam frustrujący problem. Czasami AS słowo kluczowe miałoby zamierzony skutek, ale innym razem nie. Nie udało mi się określić warunków, aby działała poprawnie.

Krótka odpowiedź: (Podziękowania dla Simona Urbanka (opiekuna pakietu dla RJDBC), Yev i Sebastien! Zobacz Długa odpowiedź. ) Jedną rzeczą, którą możesz spróbować, jest otwarcie połączenia JDBC za pomocą ?useOldAliasMetadataBehavior=true w ciągu połączenia. Przykład:

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)

Skończyło się na tym, że dla mnie zadziałało! Zobacz więcej szczegółów, w tym zastrzeżenia, w Długiej odpowiedzi.

Długa odpowiedź: Próbowałem różnych rzeczy, w tym tworzenia widoków, zmieniania zapytań, używania instrukcji JOIN, NIE używania instrukcji JOIN, używania instrukcji ORDER BY i GROUP BY itp. Nigdy nie byłem w stanie zrozumieć, dlaczego niektóre z moich zapytań były w stanie zmienić nazwy kolumn a inni nie.

Skontaktowałem się z opiekunem pakietu (Simon Urbanek). Oto, co powiedział:

Następnie zalecił, abym upewnił się, że mam najnowszy sterownik JDBC dla MySQL. Miałem najnowszą wersję. Jednak skłoniło mnie to do myślenia „może JEST to błąd ze sterownikiem JDBC”. Poszukałem więc w Google:mysql jdbc driver bug alias .

Najlepszym wynikiem tego zapytania był wpis na bugs.mysql.com . Yev, używający MySQL 5.1.22, mówi, że po aktualizacji sterownika z wersji 5.0.4 do 5.1.5 jego aliasy kolumn przestały działać. Zapytany, czy to błąd.

Sebastien odpowiedział:„Nie, to nie jest błąd! To udokumentowana zmiana zachowania we wszystkich kolejnych wersjach sterownika”. i zasugerował użycie ?useOldAliasMetadataBehavior=true , powołując się na dokumentację sterownika JDBC .

Lektor zastrzeżeń: Dokumentacja sterownika JDBC stwierdza, że ​​

Nie miałem czasu, aby w pełni zbadać, co to oznacza. Innymi słowy, nie wiem, jakie są wszystkie konsekwencje używania useOldAliasMetadataBehavior=true są. Używaj na własne ryzyko. Czy ktoś inny ma więcej informacji?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks MySQL dla grupowania według / zamawiania według

  2. Pobierz najnowsze wątki, do których użytkownik nie dołączył

  3. Dodanie join przez MySQL spowalnia całe zapytanie

  4. MySQL GROUP WEDŁUG przedziału wiekowego, w tym przedziałów null

  5. Pobierz 2 ostatnie posty dla każdej kategorii