[R-sig-DB] dynamic sql statements and dbGetQuery

Sean Davis @d@v|@2 @end|ng |rom m@||@n|h@gov
Tue Dec 8 04:13:48 CET 2009


On Mon, Dec 7, 2009 at 10:01 PM, Nick Torenvliet
<n_torenvliet using hotmail.com> wrote:
>
> Hi,
>
> Just new to R and rmysql and trying to run the same query on a list of databases as per the following...
>
> library(RMySQL)
> drv = dbDriver("MySQL")
> dbList = c("TSE")
>
> for (market in dbList){
>    con = dbConnect(drv, host="localhost", dbname=market, user="root", pass="rootPass")
>    dbTableList <- dbListTables(con)
>    for (symbol in dbTableList){
>        #get the latest date in the table
>        string <- c("select max(date(dayDate)) from ", symbol)

Basic R problem here--c() forms a vector and is not a string
concatenation.  You want to use paste():

sql <- paste("select max(date(dayDate)) from",symbol)

>        sql <- toString(string)

Now, you don't need this line.

Untested, so let us know if there is still a problem after switching
to using paste().  The other way to do this is to use sprintf().

Sean

>        tableData = dbGetQuery( con, sql)
>        cat(tableData)
>    }
>    dbDisconnect(con)
> }
>
> When I run the script I get the following error...
>
> select max(date(dayDate)) from  AABError in mysqlExecStatement(conn, statement, ...) :
>  RS-DBI driver: (could not run statement: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''select max(date(dayDate)) from , AAB, '' at line 1)
>
>
> Where AAB is the first table in dbTableList... I'm kind of stumped as to why this won't work -- the sql itself checks out fine... I've experimented with parenthesis and a semicolon... and dbSendQuery as well... all to no avail...
>
> Any help would be appreciated,
>
> Nick
>
>        [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-DB mailing list -- R Special Interest Group
> R-sig-DB using stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-db
>




More information about the R-sig-DB mailing list