Urgente Por Favor ME ajudem!

Galera to com o prazo do meu Projeto esgotado e tipo so falta uma parte e creio que ela e bem pequna so que n sei como q se faz!! e assim
ja teh postei aki no forum voçês vaum reclamar q postei repetido e tal mas to meio desesperado então to fazendo isso para ver se alguem consegue me ajudar!! bom meu problema e o seguinte:
necessito ler um arquivo CSV e inserir ele numa tabela MYSQL bom ai tenho varias duvidas inclusive como se faz isso ja procurei no google não axo so o q axo saum pedaços e ainda pedaços que n estão completo!!!
tipo eu tenho de fazer upload nele para poder trataro arquivo e inserir no mysql???eu uso a RandomAccessFile para ler o arquivo aleatoriamente(pq n sera um arquivo comum que ficara num diretorio ja pre especificado ele ficara disperso aleatoriamente pelo pc do usuario??Como faço no jsp para chamar o arquivo atraves de request.getParameter() ou como??Depois de ler linha a linha como faço para ele inserir no banco??Não pode ser Load tem de ser insert???Tipo load eu sei q so pode se estiver no servidor ou algo asim não eh??Bom ai seguem algumas de minhas duvidas!!! por favor me ajudem estou muito necessitado!!!

Agradeço a quem me ajudar ou tentar!!! Valew!!!

Se o usuario vai te mandar o arquivo, então é um upload, você precisa salvar ele aí no servidor e depois ler. Dê uma olhada em http://jakarta.apache.org/commons/fileupload/

Você usa RandomAccessFile não é porque o arquivo está disperso aleatoriamente no pc do usuario, e sim porque você quer ler as linhas aleatoriamente, não de forma sequencial. Nao tem a ver com o que você está pensando.

Usa o Commons Upload que passei aí em cima!

Leia uma linha, use split() para separar os valores e faça um sql para inserir no banco…

ex.:

String linha = //ler String[] campos = linha.split(";"); //inserir no banco

Não entendi!

cara tu ja me ajudo um monte!!! mas tipo a parte do load la n ten nada a ver pq tipo eu tava perguntando se n dava para fazer um load direto do servidor para o mysql mas pelo vito o cara va ter de fazer insert naum eh??? agora mesmo ja vou la dar uma olhada!!! mas meu qualquer coisa se tu poder continuar a dar uma olhada neste meu topico para me tirar alguma possivel duvida eu agradeço ok!!! mas por enquanto vou dar um olhada la!! se eu tiver duvidas posto se naum eu colocarei ai um aviso dizendo q consegui e lhe agradeçendo!! ahh e vc me ajudou muito esclarecendo sobre RandomAccessFile!! eh eu pensava q servia para ler aleatoriamente no pc e n o arquivo!! Valew e vo la agora!!

Bom cara axo q to no caminho certo tipo eu axei aki no portaljava mesmo um tutorial pdf q ensina a fezer upload de fotos para o banco mysql fiz umas alterações nele para se adequar a arquivos e queria q vc desse uma olhada:

[code]<%@page language="java" import="org.apache.commons.fileupload., java.util., java.sql.*" %>
<%@include file="…/conecta/acesso.jsp"%>

<html>
<body color="#FFFFFF">

<%
// verificando se o form possui campos com dados binarios
if(FileUpload.isMultipartContent(request)){
//criando o objeto para cuidar do upload
DiskFileUpload fu = new DiskFileUpload();
// setando tamanho maximo de bytes para upload
fu.setSizeMax(800000);
try
{
//parseando a requisição e retornando uma lista com os campos
// encontrando, tanto textos, quanto dados binarios(arquivos binarios)
List items = fu.parseRequest(request);
Iterator i = items.iterator();
FileItem fi;
String cmt = null;

	//laço para pegar todos os campos do form
	while&#40;i.hasNext&#40;&#41;&#41;
	&#123;
		fi = &#40;FileItem&#41;i.next&#40;&#41;;
		// teste para ver  se o campo em questão é o campo do formulario
		// ou um arquivo 
		if&#40;fi.isFormField&#40;&#41;&#41;
		&#123;
			//pegando o campo do formulario&#40;comentario&#41;
			cmt = fi.getString&#40;&#41;;
		&#125; else
		&#123;
			// obtendo o tamanho do arquivo 
			int size = &#40;int&#41; fi.getSize&#40;&#41;;
			// array de byte para armazenar a foto
			byte&#91;&#93; arq = new byte&#91;size&#93;;
			// carregando o arquivo no array
			upload.read&#40;arq, 0, size&#41;;
			
			// onde tem ? sera substituido por valores posteriormente.
			PreparedStatement pstm = con.prepareStatement&#40;&quot;INSERT INTO custos&quot;&#41;;
			
			// inserindo comentario no lugar da primeira interrogação
			pstm.setBytes&#40;2, cmt&#41;;
			// inserindo arquivo no lugar da segunda interrogação
			pstm.setBytes&#40;2, arq&#41;;
			// executando a query
			pstm.executeUpdate&#40;&#41;;
		&#125;
	&#125;
 &#125; catch&#40;java.io.FileNotFoundException e&#41; &#123;
 	out.println&#40;&quot;Erro no upload do arquivo&quot;&#41;;
 &#125; catch&#40;SQLException e&#41; &#123;
  	out.println&#40;&quot;Erro na consulta com o banco de dados&quot;&#41;;
 &#125; catch&#40;Exception e&#41;&#123;
 	out.println&#40;e.getMessage&#40;&#41;&#41;;
 &#125;

} else {
out.println("O formulario nao possui dados binarios");
}
%>
<h2>Arquivo inserido com sucesso</h2>

</body>
</html>[/code]
bom a parte do comentario farte do arquivo de fotos q axei axo q da pra tirar ela mas ninha duvida e a seguinte como faço o insert do arquivo no banco??? o arqiuvo q eles liam era uma foto jpeg e eu qro inserir um csv

no caso eles so tinham um campo neh!! eu teria 5 campos no csv e 5 na tabela um devera passar para o outro!!! como faço este insert??? tenho de mudar o jsp acima???

Aguardo!!!
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia:

Leia linha por linha e faça algo mais ou menos assim:

[code]String linha = //ler
String[] dados = linha.split(";");
PreparedStatement stmt = conexao.prepareStatement("insert into tabela(campo1, campo2, campo3, campo4, campo5) values (?, ?, ?, ?, ?)");

for(int i=0;i<dados.length;i++){
stmt.setString(i+1, dados[i]);
}

stmt.executeUpdate();[/code]

cara desculpe minha ignorancia !! mas tipo na parte de da string linha o q fica no lugar de ler???que vc colocou??
e os dados no caso eles saum os dados do csv?? eles n precisam ser declarados um a um para entaum usar o PreparedStatement???

[code]File arq = new File("path do arquivo");

BufferedReader br = new BufferedReader(new FileReader(arq));

PreparedStatement stmt = conexao.prepareStatement("insert into tabela(campo1, campo2, campo3, campo4, campo5) values (?, ?, ?, ?, ?)");

while(br.ready()){
String linha = br.readLine();
String[] dados = linha.split(";");

stmt.clearParameters();

for(int i=0;i<dados.length;i++){
stmt.setString(i+1, dados[i]);
}

stmt.executeUpdate();
}[/code]

hummm!! mas então não e necessario fazer o upload do arquivo?? e so ler ele e inserir?? assim como vc fez???

Precisa, não tem como você acessar o arquivo no computador do cliente não!

esse ‘path do arquivo’ é o caminho do arquivo no servidor, depois de você já ter gravado ele no servidor!

ahhh ta!! e como no php n tem como ler o arquivo no pc do usuario!!!
bom mas então tipo terei de usar akele jsp de upload que te mostrei neh!! mas tipo ele e pra fotos sabe como eu faço para adaptar ele para este arquivo e fazer com q ele jogue o arquivo dentro do path especificado???

bom ateh agora tenho tres jsp que são:

index.jsp:

[quote]<html>
<head>
<title>Upload Do Arquivo</title>
</head>
<body color="#FFFFFF">
<h2 align=“center”>Incluir Arquivo no banco de dados</h2><br>
<form action=“importa.jsp” method=“post” enctype=“multipart/form-data” name=“arquivo_up” id=“arquivo_up”>
<table align=“center”>
<tr>
<th>
<input type=“file” name=“arquivo”>
</th>
<th>
<input type=“submit” value=“Enviar”>
</th>
</tr>
</table>
<br>
</form>
</body>
</html>

importa.jsp:

<%@page language=“java” import=“org.apache.commons.fileupload., java.util., java.sql., java.io.” %>
<%@include file="…/conecta/acesso.jsp"%>

<%
File arq = new File(“path”);
BufferedReader br = new BufferedReader(new FileReader(arq));
PreparedStatement stmt= con.prepareStatement(“INSERT INTO custos(cc_custo, impressoes, valImpress, copias, valCopias, mes) values (?, ?, ?, ?, ?, ?)”);
while(br.ready()){
String linha;
String[] dados = linha.split(";");
for(int i = 0; i < dados.length; i++){
stmt.setString(i+1, dados[i]);
}
stmt.executeUpdate();
}

%>

e
upload.jsp

<%@page language=“java” import=“org.apache.commons.fileupload., java.util., java.sql., java.io.” %>
<%@include file="…/conecta/acesso.jsp"%>

<html>
<body color="#FFFFFF">

<%
// verificando se o form possui campos com dados binarios
if(FileUpload.isMultipartContent(request)){
//criando o objeto para cuidar do upload
DiskFileUpload fu = new DiskFileUpload();
// setando tamanho maximo de bytes para upload
fu.setSizeMax(800000);
try
{
//parseando a requisição e retornando uma lista com os campos
// encontrando, tanto textos, quanto dados binarios(arquivos binarios)
List items = fu.parseRequest(request);
Iterator i = items.iterator();
FileItem fi;

	//laço para pegar todos os campos do form
	while(i.hasNext())
	{
		fi = (FileItem)i.next();
		// teste para ver  se o campo em questão é o campo do formulario
		// ou um arquivo 
		if(fi.isFormField())
		{
			//pegando o campo do formulario(comentario)
			cmt = fi.getString();
		} else
		{
			// obtendo o tamanho do arquivo 
			int size = (int) fi.getSize();
			// array de byte para armazenar a foto
			byte[] arq = new byte[size];
			// carregando o arquivo no array
			upload.read(arq, 0, size);
		}	
			
	}
 } catch(java.io.FileNotFoundException e) {
 	out.println("Erro no upload do arquivo");
 } catch(SQLException e) {
  	out.println("Erro na consulta com o banco de dados");
 } catch(Exception e){
 	out.println(e.getMessage());
 }

} else {
out.println(“O formulario nao possui dados”);
}
%>
<h2>Arquivo inserido com sucesso</h2>

</body>
</html>

creio q graças a voçê ja esta quase concluido esta parte!! so que tipo como eu faço para integrar um ao outro e tbn o resto da parte do upload!??[/quote]

[code]}else{
// obtendo o tamanho do arquivo
int size = (int) fi.getSize();
// array de byte para armazenar a foto
byte[] arq = new byte[size];
// carregando o arquivo no array
upload.read(arq, 0, size);

FileOutputStream out = new FileOutputStream("path para salvar");
out.write(arq);
out.close();
}[/code]

Bom fiz uma outra jsp para fazer upload:

porem ela da este erro qndo se tenta fazer o upload:

Voçê n saberia o pq???

Valew!!!

Parece que a classe DeferredFileOutputStream não está no classpath.

Está faltando essa classe aí!

Veja se não tem um JAR com ela por aí!

sim mas tipo e um jar da classe io??? ou ela possui o nome de DeferredFileOutputStream???
e so colocar o jar dela no lib???

O nome completo da classe é:

org.apache.commons.io.output.DeferredFileOutputStream

só pegar o jar e colocar na pasta lib

Bom agora aconteceu o seguinte coloquei o commons-io-1.2.jar
no path do projeto e estou usando as seguintes jsp

index:

e upload3:

estou dando upload num arkivo e esta no desktop e e um arquivo csv e ocorre a seguinte escrita na tela:

Content Type: multipart/form-data; boundary=---------------------------7d6d8d6028e Field =fichero

??? O que significa isto???

valew!!!estou quase la!!

Você que tá mandando imprimir isso aí!

[quote]<%@ page import=“org.apache.commons.fileupload."%>
<%@page import="java.io.
” %>
<%@page import=“java.util.*” %>
<%
out.println("Content Type: "+request.getContentType());
boolean isMultipart=FileUpload.isMultipartContent(request);

DiskFileUpload upload=new DiskFileUpload();
List items=upload.parseRequest(request);

Iterator iter=items.iterator();

while(iter.hasNext()){
FileItem item=(FileItem)iter.next();

if(item.isFormField()){
out.println("SIZE: "+item.getSize());
File fNew= new File(application.getRealPath("/"), item.getName());
out.println(fNew.getAbsolutePath());
item.write(fNew);
}
else
out.println(“Field =”+item.getFieldName());

}
%>[/quote]

ahh e desculpe!!!
trokei e agora estou usando com jsp de upload este aki

mas da este erro aki

n falta algum import ai?? tipo o do commons novo q coloquei no projeto???
e tipo onde q eu vejo defino onde vai ficar o arquivo depois de feito o upload??

no fu.setRepositoryPath("/tmp"); ou no fichero = new File(“c:\ficherossubidos\” + fichero.getName());

valew!!!

ahh e se tem algo de errada no jsp onde que esta o erro???valew!!

Tente assim:

File fichero = new File&#40;fileName&#41;; out.println&#40;&quot;O nome do ficheiro é &quot; + fichero.getName&#40;&#41;&#41;; fichero = new File&#40;&quot;c&#58;\\ficherossubidos\\&quot; + fichero.getName&#40;&#41;&#41;; if&#40;!fichero.exists&#40;&#41;&#41;&#123; fichero.createNewFile&#40;&#41;; &#125; actual.write&#40;fichero&#41;;