Ir al contenido

Truncar campos SQL

Vamos a ver cómo podemos truncar campos SQL cuando estemos haciendo una inserción de datos mediante Java JDBC. Pero pongámonos en situación. La idea es que cuando definas un campo de la base de datos le asignes suficiente tamaño como para que los datos que insertes dentro entren sin problema. Pero la realidad es que hay ciertas situaciones en las que esto no sucede y acabamos realizando modificaciones sobre la estructura de la base de datos. Una de las situaciones que más quebraderos da es en las cargas masivas, ya que un problema de tamaño nos puede echar atrás, si no tenemos bien montado nuestro programa, toda la carga. En el caso de que estas cargas se tengan que hacer sí o sí podemos tomar la estrategia de forzar la inserción del campo de texto, independientemente de que sea más grande que el campo, forzando un truncado del campo. Lógicamente deberemos de controlar el warning que genere para tomar las acciones correctoras a posteriori. Para demostrar cómo gestionar para truncar campos SQL en un programa Java vamos a dar los siguientes pasos.

Creamos una tabla con un campo char que tenga un tamaño de 4 caracteres.

stmt = con.prepareStatement("CREATE TABLE temporal (campo CHAR(4))");
stmt.execute();
stmt.close();

Ahora vamos a insertar campos en esta tabla. Alguno será de 4 caracteres y otros serán de tamaño mayor. La inserción será la siguiente:

stmt = con.prepareStatement("INSERT INTO temporal VALUES ('Java'), ('Angular'), ('NodeJS'),('Clojure'),('Polymer')");
stmt.execute();
stmt.close();

Y por último creamos una consulta que devuelva un ResultSet en el cual se muestre que se ha grabado en la tabla. Algo tan sencillo como:

stmt = con.prepareStatement("SELECT campo FROM temporal");
rs = stmt.executeQuery();
while (rs.next())
System.out.println (rs.getString("campo"));
stmt.close();

Si ejecutamos el código tal cual lo hemos escrito nos vamos a encontrar que nuestro programa Java nos devuelve el siguiente error en una SQLException

Ventana de terminal
Data truncation: Data too long for column 'campo' at row 2

Es decir que no tenemos activado el truncado de los campos, y por lo tanto la excepción nos indica que los campos son muy largos.

Para poder truncar campos SQL en Java JDBC lo que tenemos que hacer es configurar la propiedad "jdbcCompliantTruncation" y asignarla un valor de false. Esta configuración se hace en la conexión a la base de datos.

Connection con = null;
String sURL = "jdbc:mysql://localhost:3306/lineadecodigo";
Properties p = new Properties();
p.put("user", "root");
p.put("password","");
p.put("jdbcCompliantTruncation","false");
con = DriverManager.getConnection(sURL,p);

Ahora al ejecutar el código fuente veremos que el resultado que obtenemos al recorrer el ResultSet es el siguiente:

Ventana de terminal
Java
Angu
Node
Cloj
Poly

Así hemos visto como podemos truncar campos SQL en nuestro programa Java JDBC.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Truncar campos SQL

Se explica cómo truncar campos SQL en Java JDBC durante inserciones de datos, evitando errores de longitud excesiva.

Descargar código
Pon a prueba tu conocimiento
JDBC en Java

¿Qué clase se utiliza para conectarse a una base de datos en JDBC?

  • A DatabaseConnection
  • B DriverManager
  • C ConnectionFactory
  • D DBConnect