es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo importar un archivo txt a una tabla de SQL utilizando scripting de Unix/PLSQL.

Tengo un archivo de entrada: $home/dir/subdir/input.txt

Contenido de input.txt:


123,0000,11111,3,1,X
124,0001,11112,3,1,Y
125,0002,,4,2,Y
129,0003,11114,4,2,X

¿Cómo utilizo el archivo de entrada para insertarlos en una tabla SQL utilizando scripting de Unix/PLSQL?

col1 col2 col3 col4 col5 col6
123 0000 11111 3 1 X
124 0001 11112 3 1 Y
125 0002 4 2 Y
129 0003 11114 4 2 X
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una forma de insertar el contenido de input.txt en una tabla SQL utilizando scripting de Unix/PLSQL es crear un procedimiento almacenado de PLSQL que tome el archivo de entrada como parámetro, lea su contenido mediante un cursor e inserte los datos en la tabla SQL. Aquí está cómo:

    1. Cree un nuevo procedimiento almacenado, por ejemplo:
    CREATE OR REPLACE PROCEDURE load_input_file(p_filename IN VARCHAR2) AS
      input_file UTL_FILE.FILE_TYPE;
      v_line VARCHAR2(4000);
      v_col1 NUMBER(10);
      v_col2 VARCHAR2(10);
      v_col3 VARCHAR2(10);
      v_col4 NUMBER(10);
      v_col5 NUMBER(10);
      v_col6 VARCHAR2(1);
    BEGIN
      input_file := UTL_FILE.FOPEN('$home/dir/subdir', p_filename, 'R');
      LOOP
        -- leer una línea del archivo de entrada
        UTL_FILE.GET_LINE(input_file, v_line);
        -- salir del bucle si se llega al final del archivo
        EXIT WHEN v_line IS NULL;
        -- dividir la línea por coma y asignar a las variables correspondientes
        v_col1 := TO_NUMBER(REGEXP_SUBSTR(v_line, '[^,]+', 1, 1));
        v_col2 := REGEXP_SUBSTR(v_line, '[^,]+', 1, 2);
        v_col3 := REGEXP_SUBSTR(v_line, '[^,]+', 1, 3);
        v_col4 := TO_NUMBER(REGEXP_SUBSTR(v_line, '[^,]+', 1, 4));
        v_col5 := TO_NUMBER(REGEXP_SUBSTR(v_line, '[^,]+', 1, 5));
        v_col6 := REGEXP_SUBSTR(v_line, '[^,]+', 1, 6);
        -- insertar los valores en la tabla SQL
        INSERT INTO your_table(col1, col2, col3, col4, col5, col6)
        VALUES (v_col1, v_col2, v_col3, v_col4, v_col5, v_col6);
      END LOOP;
      UTL_FILE.FCLOSE(input_file);
      COMMIT;
    END;
    /
    
    1. Modifique la ruta del archivo en la función UTL_FILE.FOPEN para que coincida con su entorno.
    2. Llame al procedimiento almacenado y pase el nombre del archivo de entrada como parámetro:

    BEGIN
      load_input_file('input.txt');
    END;
    /
    

    Esto insertará el contenido de input.txt en la tabla SQL your_table. Puede modificar los nombres de columna y tipos de datos para que coincidan con su tabla real.

Comments are closed.