いくつかの特殊文字を含むテーブル名でテーブルを作成する必要があります。RSQLite
パッケージを使用しています。作成する必要があるテーブル名は ですport.3.1
。この名前でテーブルを作成することはできません。そこで、SQLite で有効なテーブル名は何ですか?[port.3.1]
に基づいてテーブル名を変更しました。.
テーブルを作成できるようになりましたが、そのテーブルにデータフレームを挿入できません。私が使用したコードは次のとおりです。
createTable <- function(tableName){
c <- c(portDate='varchar(20) not null' ,
ticker='varchar(20)',
quantities='double(20,10)')
lite <- dbDriver("SQLite", max.con = 25)
db <- dbConnect(lite, dbname="sql.db")
if( length(which(strsplit(toString(tableName),'')[[1]]=='.') ) != 0){ tableName = paste("[",tableName,"]",sep="") } #check whether the portfolio contains special characters or not
sql <- dbBuildTableDefinition(db, tableName, NULL, field.types = c, row.names = FALSE)
print(sql)
dbGetQuery(db, sql)
}
datedPf <- data.frame(date=c("2001-01-01","2001-01-01"), ticker=c("a","b"),quantity=c(12,13))
for(port in c("port1","port2","port.3.1")){
createTable(port)
lite <- dbDriver("SQLite", max.con = 25)
db <- dbConnect(lite, dbname="sql.db")
if( length(which(strsplit(toString(port),'')[[1]]=='.') ) != 0){ port = paste("[",port,"]",sep="") } #check whether the portfolio contains special characters or not
dbWriteTable(db,port,datedPf ,append=TRUE,row.names=FALSE)
}
この例では、テーブルport1
とテーブルにデータ フレームを挿入できますport2
が、テーブルには挿入されません[port.3.1]
。この背後にある理由は何ですか? どうすればこの問題を解決できますか?