
Pessoal, to com dúvida de como evitar de enviar dados repetidos para o meu banco de dados mysql. Como posso fazer isso? O Script é esse: dir2 <- paste(dat.dir, anomes, sep="") dados<-dir(dir2, recursive = TRUE, pattern='\\.txt$', full.names = TRUE) dados1 <- 0 n<-5 nomecol<- c("sid", "ano", "mes", "dia", "hora", "hh", "lon", "lat", "height", "hls", "ps", "pmsl", "dd", "ff", "t", "td") for ( i in 1:n) { arquivo<-read.table(dados[i]) attach(arquivo) dados1<-subset(arquivo, substr(as.numeric(V1), 1, 2) == "82" | substr(as.numeric(V1), 1, 2) == "83") write.table(dados1,file=paste(anomes, ".txt", sep="paste(anomes, ".txt", sep="")"),append=TRUE,col.names=FALSE, row.names=FALSE) } dadosf <-read.table(paste(anomes, ".txt", sep=""), col.names=nomecol) if(dbExistsTable (con,paste("smar3_",anomes, sep=""))) { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf,append=T) }else { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf, sep="") } file.remove(paste(anomes, ".txt", sep=""),showWarnings = TRUE) Tentei montar um if aqui para tentar avisar que os dados já existem, mas nao ficou muito legal, ele fica sempre jogando dados repetidos para o banco. Alguém tem alguma dica para eu possa evitar isso? Abraços!

Crie chaves primárias no seu banco nas colunas onde deseja que seja única 2011/4/7 Victor Eduardo <victorduca08@gmail.com>:
Pessoal, to com dúvida de como evitar de enviar dados repetidos para o meu banco de dados mysql. Como posso fazer isso? O Script é esse:
dir2 <- paste(dat.dir, anomes, sep="") dados<-dir(dir2, recursive = TRUE, pattern='\\.txt$', full.names = TRUE)
dados1 <- 0 n<-5 nomecol<- c("sid", "ano", "mes", "dia", "hora", "hh", "lon", "lat", "height", "hls", "ps", "pmsl", "dd", "ff", "t", "td")
for ( i in 1:n) { arquivo<-read.table(dados[i]) attach(arquivo) dados1<-subset(arquivo, substr(as.numeric(V1), 1, 2) == "82" | substr(as.numeric(V1), 1, 2) == "83") write.table(dados1,file=paste(anomes, ".txt", sep="paste(anomes, ".txt", sep="")"),append=TRUE,col.names=FALSE, row.names=FALSE) }
dadosf <-read.table(paste(anomes, ".txt", sep=""), col.names=nomecol)
if(dbExistsTable (con,paste("smar3_",anomes, sep=""))) { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf,append=T) }else { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf, sep="") }
file.remove(paste(anomes, ".txt", sep=""),showWarnings = TRUE)
Tentei montar um if aqui para tentar avisar que os dados já existem, mas nao ficou muito legal, ele fica sempre jogando dados repetidos para o banco. Alguém tem alguma dica para eu possa evitar isso?
Abraços!
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O

Galera, surgiu um outro problema aqui. Estou tentando arrumar, mas está dando um erro que eu desconheço, o erro é esse: Erro em ans[test & !nas] <- rep(yes, length.out = length(ans))[test & : substituto tem comprimento zero Usei o comando: ifelse(feeddb,message("Tabela criada e alimentado com sucesso!!"),message("Atencao: Tabela nao foi alimentada!!") ) Pois quando o banco de dados é alimentado, ele sempre da resposta TRUE, então criei esse ifelse para me dizer essas mensagens, só que fica dando o erro que postei em cima. Abraços, Victor Eduardo. Em 7 de abril de 2011 14:59, Victor Eduardo <victorduca08@gmail.com>escreveu:
Pessoal, to com dúvida de como evitar de enviar dados repetidos para o meu banco de dados mysql. Como posso fazer isso? O Script é esse:
dir2 <- paste(dat.dir, anomes, sep="") dados<-dir(dir2, recursive = TRUE, pattern='\\.txt$', full.names = TRUE)
dados1 <- 0 n<-5 nomecol<- c("sid", "ano", "mes", "dia", "hora", "hh", "lon", "lat", "height", "hls", "ps", "pmsl", "dd", "ff", "t", "td")
for ( i in 1:n) { arquivo<-read.table(dados[i]) attach(arquivo) dados1<-subset(arquivo, substr(as.numeric(V1), 1, 2) == "82" | substr(as.numeric(V1), 1, 2) == "83") write.table(dados1,file=paste(anomes, ".txt", sep="paste(anomes, ".txt", sep="")"),append=TRUE,col.names=FALSE, row.names=FALSE) }
dadosf <-read.table(paste(anomes, ".txt", sep=""), col.names=nomecol)
if(dbExistsTable (con,paste("smar3_",anomes, sep=""))) { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf,append=T) }else { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf, sep="") }
file.remove(paste(anomes, ".txt", sep=""),showWarnings = TRUE)
Tentei montar um if aqui para tentar avisar que os dados já existem, mas nao ficou muito legal, ele fica sempre jogando dados repetidos para o banco. Alguém tem alguma dica para eu possa evitar isso?
Abraços!

quais os resultados de length(ans) e sum(test & !nas) ? 2011/4/8 Victor Eduardo <victorduca08@gmail.com>:
Galera, surgiu um outro problema aqui. Estou tentando arrumar, mas está dando um erro que eu desconheço, o erro é esse:
Erro em ans[test & !nas] <- rep(yes, length.out = length(ans))[test & : substituto tem comprimento zero
Usei o comando: ifelse(feeddb,message("Tabela criada e alimentado com sucesso!!"),message("Atencao: Tabela nao foi alimentada!!") )
Pois quando o banco de dados é alimentado, ele sempre da resposta TRUE, então criei esse ifelse para me dizer essas mensagens, só que fica dando o erro que postei em cima.
Abraços,
Victor Eduardo.
Em 7 de abril de 2011 14:59, Victor Eduardo <victorduca08@gmail.com> escreveu:
Pessoal, to com dúvida de como evitar de enviar dados repetidos para o meu banco de dados mysql. Como posso fazer isso? O Script é esse:
dir2 <- paste(dat.dir, anomes, sep="") dados<-dir(dir2, recursive = TRUE, pattern='\\.txt$', full.names = TRUE)
dados1 <- 0 n<-5 nomecol<- c("sid", "ano", "mes", "dia", "hora", "hh", "lon", "lat", "height", "hls", "ps", "pmsl", "dd", "ff", "t", "td")
for ( i in 1:n) { arquivo<-read.table(dados[i]) attach(arquivo) dados1<-subset(arquivo, substr(as.numeric(V1), 1, 2) == "82" | substr(as.numeric(V1), 1, 2) == "83") write.table(dados1,file=paste(anomes, ".txt", sep="paste(anomes, ".txt", sep="")"),append=TRUE,col.names=FALSE, row.names=FALSE) }
dadosf <-read.table(paste(anomes, ".txt", sep=""), col.names=nomecol)
if(dbExistsTable (con,paste("smar3_",anomes, sep=""))) { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf,append=T) }else { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf, sep="") }
file.remove(paste(anomes, ".txt", sep=""),showWarnings = TRUE)
Tentei montar um if aqui para tentar avisar que os dados já existem, mas nao ficou muito legal, ele fica sempre jogando dados repetidos para o banco. Alguém tem alguma dica para eu possa evitar isso?
Abraços!
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Tente assim: message(ifelse(feeddb,"Tabela criada e alimentado com sucesso!!","Atencao: Tabela nao foi alimentada!!")) 2011/4/8 Victor Eduardo <victorduca08@gmail.com>:
Galera, surgiu um outro problema aqui. Estou tentando arrumar, mas está dando um erro que eu desconheço, o erro é esse:
Erro em ans[test & !nas] <- rep(yes, length.out = length(ans))[test & : substituto tem comprimento zero
Usei o comando: ifelse(feeddb,message("Tabela criada e alimentado com sucesso!!"),message("Atencao: Tabela nao foi alimentada!!") )
Pois quando o banco de dados é alimentado, ele sempre da resposta TRUE, então criei esse ifelse para me dizer essas mensagens, só que fica dando o erro que postei em cima.
Abraços,
Victor Eduardo.
Em 7 de abril de 2011 14:59, Victor Eduardo <victorduca08@gmail.com> escreveu:
Pessoal, to com dúvida de como evitar de enviar dados repetidos para o meu banco de dados mysql. Como posso fazer isso? O Script é esse:
dir2 <- paste(dat.dir, anomes, sep="") dados<-dir(dir2, recursive = TRUE, pattern='\\.txt$', full.names = TRUE)
dados1 <- 0 n<-5 nomecol<- c("sid", "ano", "mes", "dia", "hora", "hh", "lon", "lat", "height", "hls", "ps", "pmsl", "dd", "ff", "t", "td")
for ( i in 1:n) { arquivo<-read.table(dados[i]) attach(arquivo) dados1<-subset(arquivo, substr(as.numeric(V1), 1, 2) == "82" | substr(as.numeric(V1), 1, 2) == "83") write.table(dados1,file=paste(anomes, ".txt", sep="paste(anomes, ".txt", sep="")"),append=TRUE,col.names=FALSE, row.names=FALSE) }
dadosf <-read.table(paste(anomes, ".txt", sep=""), col.names=nomecol)
if(dbExistsTable (con,paste("smar3_",anomes, sep=""))) { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf,append=T) }else { dbWriteTable(con,paste("smar3_",anomes, sep=""),dadosf, sep="") }
file.remove(paste(anomes, ".txt", sep=""),showWarnings = TRUE)
Tentei montar um if aqui para tentar avisar que os dados já existem, mas nao ficou muito legal, ele fica sempre jogando dados repetidos para o banco. Alguém tem alguma dica para eu possa evitar isso?
Abraços!
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
-- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O
participantes (3)
-
Benilton Carvalho
-
Henrique Dallazuanna
-
Victor Eduardo