txt - Oracle: importar archivo CSV
oracle import csv (6)
He estado buscando por un tiempo pero parece que no puedo encontrar respuestas, así que aquí va ...
Tengo un archivo CSV que quiero importar a una tabla en Oracle (9i / 10i).
Más tarde planeo usar esta tabla como una búsqueda para otro uso.
Esto es en realidad una solución en la que estoy trabajando ya que no es posible consultar con la cláusula IN con más de 1000 valores.
¿Cómo se hace esto usando SQLPLUS?
¡Gracias por tu tiempo! :)
¡Alguien me pidió que publicara un enlace al marco ! que presenté en Open World 2012. Esta es la publicación completa del blog que demuestra cómo diseñar una solución con tablas externas.
Desde Oracle 18c
puede usar tablas externas en línea :
Las tablas externas en línea permiten la definición del tiempo de ejecución de una tabla externa como parte de una declaración SQL, sin crear la tabla externa como un objeto persistente en el diccionario de datos.
Con tablas externas en línea, la misma sintaxis que se utiliza para crear una tabla externa con una instrucción CREATE TABLE se puede utilizar en una instrucción SELECT en tiempo de ejecución. Especifique tablas externas en línea en la cláusula FROM de un bloque de consulta. Las consultas que incluyen tablas externas en línea también pueden incluir tablas regulares para combinaciones, agregación, etc.
INSERT INTO target_table(time_id, prod_id, quantity_sold, amount_sold)
SELECT time_id, prod_id, quantity_sold, amount_sold
FROM EXTERNAL (
(time_id DATE NOT NULL,
prod_id INTEGER NOT NULL,
quantity_sold NUMBER(10,2),
amount_sold NUMBER(10,2))
TYPE ORACLE_LOADER
DEFAULT DIRECTORY data_dir1
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ''|'')
LOCATION (''sales_9.csv'') REJECT LIMIT UNLIMITED) sales_external;
Otra solución que puede usar es SQL Developer.
Con él, tiene la capacidad de importar desde un archivo csv (otros archivos delimitados están disponibles).
Simplemente abra la vista de tabla, luego:
- elegir acciones
- datos de importacion
- encuentra tu archivo
- elige tus opciones
Tiene la opción de hacer que SQL Developer haga las inserciones, crear una secuencia de comandos sql insert o crear los datos para una secuencia de comandos de SQL Loader (no he probado esta opción yo mismo).
Por supuesto, todo eso es discutible si solo puede usar la línea de comando, pero si puede probarlo con SQL Developer localmente, siempre puede implementar los scripts de inserción generados (por ejemplo).
Simplemente agregando otra opción a las 2 respuestas ya muy buenas.
SQL Loader es el camino a seguir. Recientemente cargué mi tabla desde un archivo csv, nuevo en este concepto, me gustaría compartir un ejemplo.
LOAD DATA
infile ''/ipoapplication/utl_file/LBR_HE_Mar16.csv''
REPLACE
INTO TABLE LOAN_BALANCE_MASTER_INT
fields terminated by '','' optionally enclosed by ''"''
(
ACCOUNT_NO,
CUSTOMER_NAME,
LIMIT,
REGION
)
Coloque el archivo de control y csv en la misma ubicación en el servidor. Ubique el exe sqlldr y invoqúelo.
sqlldr userid / passwd @ DBname control = Ej: sqlldr abc / xyz @ ora control = load.ctl
Espero eso ayude.
Una solución alternativa es usar una tabla externa: http://www.orafaq.com/node/848
Use esto cuando tenga que hacer esta importación muy a menudo y muy rápido.
SQL Loader ayuda a cargar archivos csv en tablas: SQL*Loader
Si solo quieres sqlplus, entonces se vuelve un poco complicado. Necesita ubicar su script sqlloader y su archivo csv, luego ejecute el comando sqlldr.