2012-02-05 73 views
5

Necesito cargar datos en una hoja de Excel a la base de datos usando java.Carga de datos del archivo de Excel a la base de datos usando java

La base de datos será Oracle.

La hoja de Excel se cargará una vez al mes por un usuario que utilice una aplicación web (Spring MVC front end).

La hoja de Excel tendrá miles de registros/filas, p. alrededor de 15000 o más.

  1. ¿Cuál es la manera más rápida para subir esta gran cantidad de datos en la base de datos? Somos usando JDBC simple (Plantilla JDBC de Spring).
  2. ¿Cómo manejamos los errores de arena de transacción ya que puede haber errores al cargar los datos, en cuyo caso los datos parcialmente cargados serán inútiles?
  3. Necesitamos poder notificar al usuario del error para que pueda corregir la hoja de Excel e intentar de nuevo?

Por favor, ayuda/

+0

Hay herramientas de terceros o apis en java que acelerarán el proceso de carga. Tenga en cuenta que esta es una aplicación basada en web. Entonces, las herramientas que existen deben ser fáciles de integrar en la aplicación web. – ashishjmeshram

Respuesta

0

En cuanto a la primera pregunta, creo que la mejor solución es convertir el archivo de Excel en formato CSV (comas-valor separado) que es muy simple para ser analizada. No estoy seguro de que pueda ayudar, pero encontré esto link.

Para el manejo de excepciones, eche un vistazo a la anotación @ExceptionHandler que quizás pueda ayudarlo.

+0

Gracias por la respuesta. Pero, ¿es esta la forma más rápida? ¿Cómo notifico a los usuarios de los errores para que puedan corregir los errores y subir de nuevo Excel? – ashishjmeshram

0

Escribe en el disco y realiza una importación masiva desde el oráculo. Analice los errores y devuélvalos al usuario.

1

¿Qué versión de Oracle usas? Si solo necesita una aplicación web para ese caso de uso, tal vez APEX pueda hacer que sea su amigo. A partir de Oracle 11g, estará preinstalado junto con la base de datos, desde 9i puede instalarlo usted mismo. Trae una muy buena integración de Excel por lo que será fácil, incluso para principiantes, crear una aplicación en unos días.

0

Puede usar jExcelAPI o Apache POI que son gratuitos o puede pagar Aspose cells que no es tan caro si trabaja para una empresa.

Cada uno de estos puede ser muy útil. Por ejemplo, puede usar la biblioteca para buscar errores, luego convertir a CSV y finalmente usar JDBC para insertar en la base de datos.

Si sus hojas de Excel son grandes como usted dice, tenga cuidado de no cargar todo en la memoria al mismo tiempo; de lo contrario, podría quedarse sin espacio en el montón. Haga su recolección de basura durante todo el proceso.

0

¿Cuántas columnas de cada registro en su hoja de datos y qué tan grande son los datos en cada celda? Puede calcular el consumo de memoria para ver si se ajusta a su pila después de convertirla a objetos Java utilizando Apache POI.

Luego puede iniciar una transacción de base de datos tratando de insertar los datos.En caso de error, la transacción se retrotraerá y podrá archivar los datos incorrectos en la hoja para que los corrija el usuario.

0

Wat es exactamente lo que debe hacer es,

1) Uso de Apache POI para Microsoft Excel conversión de documentos a XML. Le da a su oficina el formato OpenXML. Una vez que lo tienes Guárdelo en el sistema de archivos. 2) En segundo lugar, proporcione un enlace al usuario para importar 3) una vez que haga clic en importar, comenzará un trabajo de cuarzo. Dado que está utilizando la primavera http://static.springsource.org/spring/docs/1.2.x/reference/scheduling.html

4) En su clase de trabajo, inicie su extracción XML y luego inicie una transcation (Hibernate). Después de cada

Iniciando una nueva transacción en la primavera.

DefaultTransactionDefinition def = new DefaultTransactionDefinition(); 
def.setName("ImportFileTransaction"); 
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); 

TransactionStatus status = txManager.getTransaction(def); 

después de cada confirmación

txManager.commit(status); 
status = txManager.getTransaction(def); 

obtener el estado de las transacciones y cntinue insertar

5) para notificar al usuario mantener xml error de modo que el THT fila tiene se inserta un error en que xml .

Enjoy !!!!

0

También he hecho lo mismo que usted ha pedido. Hice los siguientes pasos

  1. archivo guardado en el servidor.
  2. Usado frasco de puntos de interés, ya que soporta características máximas xls
  3. creado una clase java según la estructura de la tabla
  4. Se aplica la validación en el método de selección, que comprobará el valor durante el ajuste de datos en la colección del tipo (clase lo que se crea), a excepción de un código relativo para rastrear el manejo de la excepción y para un mensaje personalizado (Para mostrar el final del usuario).
  5. una vez que se hayan validado todos los registros, luego acceda a la base de datos para validar el 2º nivel, por ejemplo, obtener ID para cualquier nombre de pila. maneje la excepción aquí de nuevo usando el código de error.
  6. crear una plantilla de consulta de inserción para insertar datos en la base de datos, intente utilizar el enunciado preparado porque es poco seguro para la inyección de SQL.
  7. buena forma es utilizar hibernación o cualquier otro servicio de persistencia, ya que una gestión segura y de transacción, o para JDBC utilice consulta por lotes para cometer finalmente si todo lo fina demás simplemente deshacer la transación

si el registro es muy grande (15000 no es tan grande), luego divida su trabajo en diferentes lotes y controle por hilo.

Cuestiones relacionadas