syntax - delete - Consulta SQL para truncar la tabla en IBM DB2
delete table db2 (6)
Esta es la documentación de referencia exacta disponible para TRUNCATE en DB2 a partir de la versión 9.7
¿Alguien puede darme la sintaxis para truncar una tabla en IBM DB2?
Estoy ejecutando el siguiente comando: truncate table tableName immediate;
El error es DB2
SQLCODE = -104, SQLSTATE = 42601, SQLERRMC = tabla; truncar; JOIN, DRIVER = 3.50.152 Mensaje: Se encontró una "tabla" de token inesperada después de "truncar". Los tokens esperados pueden incluir: "JOIN" ... SQLCODE = -104, SQLSTATE = 42601, DRIVER = 3.50.152
La sintaxis coincide con la especificada en los documentos de referencia de IBM: http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.sqlref/db2z_sql_truncate. htm
¿Qué versión de DB2 estás usando? El comando truncate table
se introdujo en DB2 v9 (al menos en el mainframe, que parece ser lo que pregunta sobre la base del enlace).
Puede que tenga que recurrir a la opción delete from
, aunque este artículo proporciona una forma de procedimiento almacenado para hacerlo en DB2 v8.
use truncar ''table_name'' inmediato
Si está utilizando DB2 para AS400, la TABLA TRUNCATE INMEDIATA NO funcionará. El trabajo equivallente es:
O más rápido (forma más eficiente)
Sintaxis de Java:
CommandCall command = new CommandCall(new AS400(AS400SystemName, AS400JavaUser, AS400JavaPwd));
try {
command.run("CLRPFM FILE(as400SchemaName/" + tableName + ")");
Hay un gran artículo sobre truncar , aquí está la esencia de las cosas de DB2
Casi sigue el estándar. (Desde la versión 9.7) DB2 requiere que se agregue la palabra clave IMMEDIATE al enunciado TRUNCATE TABLE ordinario, por ejemplo:
TRUNCATE TABLE someschema.sometable IMMEDIATE
TRUNCATE TABLE debe ser la primera declaración en una transacción. Una transacción que comience con TRUNCATE TABLE puede incluir otras declaraciones, pero si la transacción se retrotrae, la operación TRUNCATE TABLE no se deshace. La operación TRUNCATE TABLE de DB2 tiene una cantidad de argumentos opcionales; consulte la documentación para obtener más información al respecto; especialmente, el argumento REUTILIZAR ALMACENAMIENTO puede ser importante para tareas ad-hoc de DBA. En las versiones de DB2 <9.7, puede abusar de la instrucción IMPORT. Desafortunadamente, necesita saber de qué sistema operativo se ejecuta el comando para que esto funcione:
En sistemas tipo UNIX: IMPORTAR DE / dev / null OF DEL REPLACE EN tablename En Windows: IMPORT FROM NUL OF DEL REPLACE EN tablename IMPORT no se puede abusar en todos los contextos. Por ejemplo, cuando se trabaja con SQL dinámico (desde Java / .NET / PHP /...- sin usar el procesador de línea de comandos db2), debe ajustar el comando IMPORT en una llamada a ADMIN_CMD, por ejemplo:
CALL ADMIN_CMD(''IMPORT FROM /dev/null OF DEL REPLACE INTO tablename'')
La IMPORTACIÓN parece estar permitida en una transacción que involucra otras operaciones, sin embargo, implica una operación COMMIT inmediata.
También se puede abusar del comando ALTER TABLE para vaciar rápidamente una tabla, pero requiere más privilegios y puede causar problemas con la recuperación en avance.
Esto fue tomado del sitio web: http://troels.arvin.dk/db/rdbms/#bulk-truncate_table-db2
DB2 en z / OS V10 Vacie una de sus tablas: tabla truncada; seguido por el trabajo de compromiso. Ex. temperatura truncada; Tabla de otra persona: truncate owner.table Ejemplo: truncate student.work; No he intentado esto en un DB2 enlazado. No sé si truncar node2.student.work; es bueno.
SQL para crear listas de tablas automáticamente. Subcadena (substr) utilizada porque el ancho de la columna para el nombre de la tabla y el creador son muy largos. Tus valores pueden ser diferentes.
select ''truncate table ''||substr(creator,1,9)||''.''||substr(name,1,20)
from sysibm.systables
where creator = ''Student'';