Foros del Web » Programación para mayores de 30 ;) » Java »

guardar en una base los datos de un archivo txt en jsp

Estas en el tema de guardar en una base los datos de un archivo txt en jsp en el foro de Java en Foros del Web. Hola chicos estoy en un lio medio , tengo que cargar un txt y una vez leido cada palabra debo agregarlo a un campo de ...
  #1 (permalink)  
Antiguo 23/05/2009, 15:13
 
Fecha de Ingreso: diciembre-2008
Ubicación: Bogota
Mensajes: 149
Antigüedad: 15 años, 11 meses
Puntos: 1
guardar en una base los datos de un archivo txt en jsp

Hola chicos estoy en un lio medio , tengo que cargar un txt y una vez leido cada palabra debo agregarlo a un campo de la base de datos por ejemplo me lee la linea
127.0.0.1 - - [06/Feb/2009:11:08:08 -0500] "GET / HTTP/1.1" 200 3444

con el StringTokenizer me separa la liena por palabras entonces quedaria algo asi
127.0.0.1
-
-
[06/Feb/2009:11:08:08
-0500]
"GET
/
HTTP/1.1"
200
3444

cada palabra pertenece aun campo y se debe ingresar ala bd, no se como hacerlo por que me cuenta 18838 tokens y a las cada 10 palabras empieza para cada campo de la base de datos
uds me podrian ayudar?
en serio lo agradeceria
  #2 (permalink)  
Antiguo 23/05/2009, 15:25
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: guardar en una base los datos de un archivo txt en jsp

alli no te las esta separando por palabras, mas bien por espacios, como es la estructura de tu tabla y como quieres que qede separada la linea de texto, nos podrias dar un ejemplo

Saludos
  #3 (permalink)  
Antiguo 23/05/2009, 15:51
 
Fecha de Ingreso: diciembre-2008
Ubicación: Bogota
Mensajes: 149
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: guardar en una base los datos de un archivo txt en jsp

muchas gracias por tu atencion mira las lienas son asi
127.0.0.1 - - [06/Feb/2009:11:08:08 -0500] "GET / HTTP/1.1" 200 3444

127.0.0.1 - - [06/Feb/2009:11:08:08 -0500] "GET /appserv/annoicon.gif HTTP/1.1" 200 1182

aqui van 2 lineas
bueno la tabla tiene los campos
ip
id_maquina
id_usuario
fecha_hora
localizacion
metodo
linea_peticion
protocolo
estado
tamano_paquete
cada palabra corresponde a un valor de la linea entonces debe quedar asi
ip : 127.1.1.1
id_maquina: -
id_usuario : -
fecha_hora : [06/Feb/2009:11:08:08
localizacion : -0500]
metodo : "GET
linea_peticion : /
protocolo : HTTP/1.1"
estado : 200
tamano_paquete : 3444

espero que me haga hecho entender
gracias
  #4 (permalink)  
Antiguo 24/05/2009, 08:50
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: guardar en una base los datos de un archivo txt en jsp

entonces el problema es que te cuenta mas tokens de los que deberian de ser?

puedes poner tu codigo para verlo, y deberias usar mejor split en ves de stringtokenizer
  #5 (permalink)  
Antiguo 24/05/2009, 08:55
 
Fecha de Ingreso: diciembre-2008
Ubicación: Bogota
Mensajes: 149
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: guardar en una base los datos de un archivo txt en jsp

package servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;

import java.util.List;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFac tory;
import org.apache.commons.fileupload.servlet.ServletFileU pload;

import java.util.StringTokenizer;
import clases.loguito;
import dao.daologuito;
import java.util.Vector;


public class UploadFile extends HttpServlet {

private String dirUploadFiles; //directorio donde se guardara los archivos
private loguito loguito;
private daologuito daologuito;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

dirUploadFiles = getServletContext().getRealPath( getServletContext().getInitParameter( "dirUploadFiles" ) );

if( ServletFileUpload.isMultipartContent( request ) ){

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload( factory );

upload.setSizeMax( new Long( getServletContext().getInitParameter( "maxFileSize" ) ).longValue() ); // 1024 x 300 = 307200 bytes = 300 Kb

List listUploadFiles = null;
FileItem item = null;

try{

listUploadFiles = upload.parseRequest( request );

Iterator it = listUploadFiles.iterator();
while( it.hasNext() ){
item = ( FileItem ) it.next();
// 8. evaluamos si el campo es de tipo file, para subir al servidor
if( !item.isFormField() ){
//9. verificamos si el archivo es > 0
if( item.getSize() > 0 ){

// 10. obtener el nombre del archivo
String nombre = item.getName();
// 11. obtener el tipo de archivo
// e. .jpg = "image/jpeg", .txt = "text/plain"
String tipo = item.getContentType();
// 12. obtener el tamaño del archivo
long tamanio = item.getSize();
// 13. obtener la extension
String extension = nombre.substring( nombre.lastIndexOf( "." ) );


String datos = item.getString();





out.println( "Nombre: " + nombre + "<br>");
out.println( "Tipo: " + tipo + "<br>");
out.println( "Extension: " + extension + "<br>");
System.out.println( "Tamaño: " + tamanio + "");
System.out.println( "?: " + datos + "");

dao.daologuito daolo= new dao.daologuito();
clases.loguito loguito= new clases.loguito();


Vector vector = new Vector();
int idx = 0;
int tokenCount;
String words[] = new String [40000];
// String message="Este sera el mensaje a ser divido para ingresar en el vector para ayuda de caritol linda";
StringTokenizer st = new StringTokenizer(datos);
tokenCount = st.countTokens();
System.out.println("Number of tokens = " + tokenCount);
while (st.hasMoreTokens()){
words[idx] = st.nextToken();
System.out.println(words[idx]);
idx++;
}
for (idx=0;idx<tokenCount; idx++){
vector.addElement(words[idx]);
String dataStore = vector.elementAt(idx).toString();
System.out.println("Data en el Vector : " + dataStore + "pos "+ idx);
daolo.almacenarloguito(dataStore,dataStore,dataSto re,dataStore,dataStore,dataStore,dataStore,dataSto re,dataStore,dataStore);

System.out.println("registros insertados");
}

/////////////////////////

File archivo = new File( dirUploadFiles, nombre );
//String cadena= new BufferRead(archivo);

// 18. Write the uploaded file to the system
item.write( archivo );
if ( archivo.exists() ){
out.println( "GUARDADO " + archivo.getAbsolutePath() + "</p>");
}else{
// nunca se llega a ejecutar
out.println( "FALLO AL GUARDAR. NO EXISTE " + archivo.getAbsolutePath() + "</p>");
}

}
}
}

}catch( FileUploadException e ){

e.printStackTrace();
}catch (Exception e){
// poner respuesta = false; si existe alguna problema
e.printStackTrace();
}
}
out.println( "Fin de la operacion! ;)" );
out.close();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

}
  #6 (permalink)  
Antiguo 24/05/2009, 08:59
 
Fecha de Ingreso: diciembre-2008
Ubicación: Bogota
Mensajes: 149
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: guardar en una base los datos de un archivo txt en jsp

mira el codi y el problema no es el numero de tokens
lo que pasa es que al guardar en la base de datos
me llena la primera fila con el primer dato
osea
127 127 127 127 127 127 127
- - - - - - -
get get get get get get get get
ej eje ej eje.......................................
y asi
y no quiero eso
quiero que me guare segun la liena leida
osea 127 - get eje

espero haberme hecho entnder
muxas gracias drac94
  #7 (permalink)  
Antiguo 24/05/2009, 09:14
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: guardar en una base los datos de un archivo txt en jsp

Lo que pasa es que tu estas guardando todo el contenido del archivo en un solo string, y cuando le haces el stringtokenizer te cuenta todos los caracteres del archivo

la solucion
para empezar, usar split que es mejor,
luego hacerle un split a la variable datos con "\n" para que te de una vector con todas las lineas:
Código PHP:
String [] temp null;
temp datos.split("\n+"); 
luego a cada linea o sea a cada elemento del vector le haces un split con "\\s+" para que ahora si te separe cada linea por espacios y asi ya la puedas meter dentro de la bd
Código PHP:
String [] temp2 null;
temp2 temp[i].split("\\s+"); 
  #8 (permalink)  
Antiguo 24/05/2009, 09:41
 
Fecha de Ingreso: diciembre-2008
Ubicación: Bogota
Mensajes: 149
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: guardar en una base los datos de un archivo txt en jsp

oye ya entendi tu codigo
no encuentro diferencia entre el stringtoken y el split
sin embargo sigo con el mismo lio de como guardalrlo en la bd
si lo que tu me quieres decir es que prmero lo tome por lineas una vez que lo tenga en lineas tome la linea ahi si la separo
y luego lo inserto pero no se como insetarlo?
:)
  #9 (permalink)  
Antiguo 24/05/2009, 09:54
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: guardar en una base los datos de un archivo txt en jsp

creo que tu metodo para insertar es este almacenarloguito, y le mandas los 10 parametros

podrias hacerlo asi
Código PHP:
String [] temp null;
temp datos.split("\n+");  
for(
int i=0i<temp.length;i++)
{
    
String [] temp2 null;
    
temp2 temp[i].split("\\s+");  
    
daolo.almacenarloguito(temp2[0],temp2[1],temp2[2],temp2[3],temp2[4],temp2[5],temp2[6],temp2[7] ,temp2[8],temp2[9]);

  #10 (permalink)  
Antiguo 24/05/2009, 10:03
 
Fecha de Ingreso: diciembre-2008
Ubicación: Bogota
Mensajes: 149
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: guardar en una base los datos de un archivo txt en jsp

oye muxas gracias drac94 eres un sol
sale perfecto
:)
gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:58.