una txt tabla planos masiva importar exportar developer datos carga archivos database oracle

database - txt - Obtener datos de una base de datos de Oracle como un archivo CSV(o cualquier otro formato de texto personalizado)



importar datos de un txt a una tabla oracle (7)

Aquí hay una implementación en Python:

import cx_Oracle, csv orcl = cx_Oracle.connect(''ohd/john@ohddb'') curs = orcl.cursor() csv_file_dest = "C://test.csv" output = csv.writer(open(csv_file_dest,''wb'')) sql = "select * from parameter" curs.execute(sql) headers_printed = False for row_data in curs: if not headers_printed: cols = [] for col in curs.description: cols.append(col[0]) output.writerow(cols) headers_printed = True output.writerow(row_data)

Una secuencia de comandos de perl de muestra que se conecta a una base de datos de Oracle, realiza una consulta SELECT simple y arroja los resultados a stdout en formato CSV sería genial. Python o cualquier otro lenguaje disponible en una distribución típica de Unix estaría bien también.

Tenga en cuenta que estoy empezando desde cero con nada más que un nombre de usuario / contraseña para una base de datos Oracle remota. ¿Hay más en esto que solo tener la biblioteca de conexión oráculo correcta?

Si hay una manera de hacer esto directamente en mathematica, sería ideal (presumiblemente debería ser posible con J / Link (cosa de integración java de mathematica)).


En Perl, podría hacer algo como esto, omitiendo todas mis declaraciones de variables locales y ... o el manejo de errores "error de mensaje" para abreviar.

use DBI; use DBD::Oracle; $dbh = DBI->connect( "dbi:Oracle:host=127.0.0.1;sid=XE", "username", "password" ); # some settings that you usually want for oracle 10 $dbh->{LongReadLen} = 65535; $dbh->{PrintError} = 0; $sth = $dbh->prepare("SELECT * FROM PEOPLE"); $sth->execute(); # one example for error handling just to show how it''s done in principle if ( $dbh->err() ) { die $dbh->errstr(); } # you can also do other types of fetchrow, see perldoc DBI while ( $arrayref = $sth->fetchrow_arrayref ) { print join ";", @$arrayref; print "/n"; } $dbh->disconnect();

Dos notas, porque la gente pregunta en comentarios:

  • sid = XE es la id del servicio Oracle, que es como el nombre de su base de datos. Si instala la versión gratuita de Oracle, su valor predeterminado es "XE", pero puede cambiarlo.
  • Instalación de DBD :: Oracle necesita las bibliotecas de cliente de Oracle en su sistema. Instalar eso también establecerá todas las variables de entorno necesarias.

Mathematica tiene un paquete "DatabaseLink" integrado que debería facilitar esto pero necesita encontrar un controlador para Oracle. Instalar las "bibliotecas cliente Oracle" debería hacer eso ...


Obtenga Oracle Application Express. Es una herramienta basada en navegador que viene gratis con la base de datos. Le permite hacer clic rápidamente en los informes y especificar CSV (o Excel) como formato de salida. (También puede usarlo para compilar aplicaciones completas).

Encontrará toneladas de documentación, demos, etc. aquí: http://apex.oracle.com

También puede descargar la herramienta en esta URL, o puede registrarse para obtener un espacio de trabajo gratuito y jugar con la herramienta en un servidor de Oracle.


No soy un programador de PERL, pero esta es una pequeña característica adicional que quizás quiera investigar. Eche un vistazo al concepto de tablas externas en Oracle. Crea una tabla con una definición de algo similar a lo siguiente:

CREATE TABLE MY_TABLE ( COL1 NUMBER(2), COL2 VARCHAR2(20 BYTE) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY SOME_DIRECTORY_NAME ACCESS PARAMETERS ( FIELDS TERMINATED BY '','' MISSING FIELD VALUES ARE NULL ) LOCATION (SOME_DIRECTORY_NAME:''my_file.csv'') ) REJECT LIMIT UNLIMITED;

Tenga en cuenta que esta instrucción DDL supone que tiene un directorio ya creado llamado "SOME_DIRECTORY_NAME". A continuación, puede emitir comandos DML para obtener datos dentro o fuera de esta tabla, y una vez que se haya realizado la confirmación, los datos estarán muy bien y bien definidos en su archivo my_file.csv. Después de eso, haz tu magia PERL para obtener el archivo donde quieras.


¿Qué tal algo tan simple como crear el archivo desde sqlplus ...

set echo off heading off feedback off colsep ,; spool file.csv; select owner, table_name from all_tables; spool off;


Como dreeves dice, DatabaseLink hace esto trivial. La parte que no sé es los detalles de la declaración JDBC. Pero así es como las cosas buscan a MySQL:

Luego desde dentro de Mathematica:

Needs["DatabaseLink`"] conn = OpenSQLConnection[JDBC["mysql","hostname/dbname"], Username->"user", Password->"secret"] Export["file.csv", SQLSelect[conn, "MyTable"]]

Por supuesto, puede asignar SQLSelect a una variable primero y examinarla. Será una lista de listas con los datos de la tabla. Puede pasar condiciones a SQLSelect, consulte la documentación correspondiente (por ejemplo, SQLColumn ["Name"] == "joeuser").

Lo único específico de Oracle aquí es cómo hacer la conexión, en la expresión JDBC. Probablemente sea algo así como JDBC ["oracle", "hostname / dbname"].