Oracle

Buenas tardes experto estoy utilizando el comando LOAD DATA y me aparecen una serie de errores y no se por que estos se originan... La version de oracle con que estoy trabajando es la 9i.
Trato de hacer lo siguiente:
load data
          infile 'misdatos.csv'
      into table tabla_a_actualizar
          fields terminated by ";"   ( nombre, apellidos, direccion, nacimiento )
me aparecen los siguientes errores:
SP2-0042: unknown command "load data" - rest of line ignored.
SP2-0734: unknown command beginning "infile ('/..." - rest of line ignored.
SP2-0734: unknown command beginning "into table..." - rest of line ignored.
SP2-0734: unknown command beginning "fields ter..." - rest of line ignored.
SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.
Le agradezco en lo que me pueda ayudar

3 Respuestas

Respuesta
1
Para cargar datos tienes que utilizar una herramienta que se llama sqlldr.
Ejecuta sqlldr desde la consola (sea windows o linux), como ejemplo:
sqlldr userid=scott/tiger control=control.ctl log=control.log
Donde el fichero control.ctl tendrá la información sobre LOAD DATA que comentas.
gracias experto... ¿desde un procedimiento almacenado se puede ejecutar este comando?
No, ejecútalo desde un archivo bat (si estás en windows) o un script de la shell (si estás en UNIX).
Mejor dicho, sí que es posible llamar al loader desde un procedimiento, pero eso es para usuarios avanzados, y no merece la pena.
Incluso en Windows puedes crear una tarea programada que ejecute el loader todos los días a una hora.
Respuesta
1
¿Desde dónde estas lanzandolo? Tienes que utilizar el sqlldr ( la herramienta Loader de Oracle)
Buenos días experto... lo estoy lanzando desde un procedimiento almacenado...
No estoy claro en lo del sqlldr.
No se puede hacer eso desde un procedimiento almacenado.
Tienes que utilizar la utilidad sqlldr (loader) que tendrías que instalar si no la tienes. Busca el fichero sqlldr*. *, para ver si lo tienes.
Te tendrías que crear un fichero con el load data ejemplo:
Prueba. Ctl
LOAD DATA
INFILE 'C:\prueba.csv'
APPEND  
INTO TABLE carga_prueba
Fields terminated by "," optionally enclosed by '"'
(
Mes integer external
)
Y luego ejecutar:
C:\ORACLE\product\10.2.0\client\BIN>sqlldr userid=scott/tiger@Bd1 control=C:\Prueba.ctl log=c:\prueba.log
También puedes hacerlo en la Base de datos mediante tablas externas:
Tendrías que copiar el archivo .csv a un directorio en el serv de B.D.
Te paso un Ejemplo:
SQL> create or replace directory external_data
    as '/app/oracle/external/data';
SQL> create table carga_prueba
     (
     Mes number
     )
     (
    default directory external_data
    access parameters
      (
      Records delimited by newline
fields terminated by ','
      )
    location ('prueba.csv')
    );
Respuesta
1
Supongo que intentas cargas un SQLLOADER para hacer la inserción de los datos. No me haces llegar mucha información pero si intentas ejecutar esto desde un SQLPLUS no te funcionar debes ejecutart el SQLLDR desde el sistema operativo dando como el siguiente comando:
sqlldr username/password control=<control_file>...
Te hago llegar también un manual para que puedas hacer la carga y tengas más claro como poder definir los parátmetro sd e ejecución.
http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/part_ldr.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas