Cómo obtener datos de una base de datos Oracle a una hoja de Excel mediante consultas y macros

Hola,

No sé si esto está actualizado o no, pero por el bien de cualquier lectura, responderé esto.

Entonces, el principio aquí es conectarse a su servidor primero, consultar los datos que necesita con una declaración SQL, descargarlos e imprimirlos en objetos de hoja de cálculo de Excel.

Básicamente, usando la biblioteca ADODB, necesitarás tres subs principales.
El primero será conectar su computadora (cliente) al servidor utilizando la cadena de conexión como Alex ha mencionado. Puede ir a la página en connectionstrings.com para obtener la cadena de conexión correcta para su entorno.

Una vez que esté en línea, simplemente use la segunda declaración sub o VBA que se trata de consultar la base de datos usando una declaración SQL básica. Posteriormente, el vector de resultados estará disponible en un objeto ADODB llamado Recordset. Esta es solo una copia del resultado que obtendrá de la consulta. Le permitirá extraer datos de él y navegar por sus filas y columnas.

Luego, simplemente pegue eso en la celda de destino en sus hojas de trabajo de Excel.

La estructura principal de los subs es la siguiente (y, por supuesto, deberá adaptarlos a su situación).

Sub Connect_Query ()
Dim Connection_DB como ADODB.Connection
‘aquí declaras el objeto de conexión
Dim R_Set como ADODB.RecordSet
‘Ahora declaras el objeto recordset
Dim SQL_Statement, Connection_Str como String

Establecer Connection_DB = Nueva ADODB.Connection
Connection_DB.Connection = Connection_Str
Connection_DB.Open
‘Ahora estás en línea
‘como he mencionado, Connection_Str es simplemente una declaración de cadena’ que contiene toda la información necesaria que se necesita para conectarse a ‘su servidor (como dirección IP, nombre de host, nombre de servicio, nombre de usuario y’ contraseña, etc.)

Establecer R_set = Nuevo ADODB.RecordSet

SQL_Statement = “SELECCIONE ORDEN, CLIENTE DE LA TABLA DONDE …”
‘Para un mejor rendimiento, use nombres de columna, no permita que el código adivine
Establecer R_set = Connection_DB.Execute (SQL_Statement, Num_Row, Opciones)
‘Las opciones aquí son múltiples y son bastante útiles, consulte el sitio web diferente para el método “Ejecutar” y sus opciones.

‘Ahora el código ha ejecutado la instrucción SQL y el servidor generará el vector de resultados que se copiará en el objeto R_set. Se puede acceder a los valores utilizando la propiedad “Campos (índice)” donde el índice comienza desde 0 y es el índice de la columna. Por ejemplo, para obtener los campos de orden, utiliza R_set.Fields (0) .Value

‘Para pasar físicamente a la siguiente fila, use R_set.MoveNext. Sin embargo, no olvide usar R_Set.EOF (un valor booleano que indica, cuando es verdadero, que su cursor ha llegado al final del conjunto de registros).

‘Entonces, para copiar, por ejemplo, sus datos en Excel, use:

i = 1
Mientras no (R_set.EOF)

Hojas de trabajo (“Mis datos”). Rango (“A” e i). Valor = R_set.Fields (0). Valor
Hojas de trabajo (“Mis datos”). Rango (“B” e i). Valor = R_set.Fields (1). Valor
R_set.MoveNext
i = i + 1

Encaminarse a

‘Ahora limpiando
Establecer R_set = Nada
Establecer Connection_DB = Nada

End Sub

Puede usar el complemento Devart Excel para Oracle para conectar Microsoft Excel a Oracle, cargar rápida y fácilmente datos de Oracle a Excel, actualizar instantáneamente los datos en un libro de Excel desde la base de datos, editar estos datos y guardarlos nuevamente en Oracle

El complemento le permite trabajar con datos de Oracle como con las hojas de trabajo habituales de Excel, realizar fácilmente la limpieza y la desduplicación de datos, y aplicar todas las potentes capacidades de procesamiento y análisis de datos de Excel a estos datos.

Busque conexiones ADODB.
Me encantaría darte una respuesta exacta, pero yo también soy nuevo en esto.
Necesitaba conectar mi macro a mi base de datos de aplicaciones, que es una base de datos Oracle. Usé la siguiente cadena de conector (recuerde que hay diferentes formatos de cadena dependiendo del tipo de DB al que se está conectando):

Subbotón3 ()
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Establecer rs = Nuevo ADODB.Recordset

strCon = “Driver = {Microsoft ODBC para Oracle};” & _
“CONNECTSTRING = (DESCRIPTION =” & _
“(DIRECCIÓN = (PROTOCOLO = TCP)” & _
“(HOST = PLEASEADD) (PORT = 5121))” & _
“(CONNECT_DATA = (SERVICE_NAME = PLEASEADD))); uid = PLEASEADD; pwd = PLEASEADD;”

con.Open (strCon)

‘Consulta, si quieres

con.Cerrar
End Sub

Mediante el uso de la tabla externa, puede consultar datos de la base de datos externa que están en archivos planos o formato csv y puede consultarlos y almacenarlos en la base de datos, pero no puede aplicar ninguna clase de operación DML (insertar, actualizar, eliminar) en tablas externas.

Esto es muy facil.

1. Abra Excel.

2. Abra “Fuentes de datos” en el menú de Excel

3.Cree los datos requeridos.

4. Proporcione los detalles requeridos (Servicio, Nombre de usuario, Contraseña) en la utilidad que se muestra en Excel

5. Haga clic en finalizar

6.Ahora seleccione la tabla y optimice la consulta para obtener los datos de la base de datos (aquí hemos considerado la base de datos Oracle)

7.volver a la hoja de Excel

8. Ahora podemos ver los datos en la hoja de Excel. Manipular los datos en Excel en consecuencia.

Mira el video

en el que te he explicado paso a paso

Hay muchas soluciones para esto.

  1. Usando ADODB como lo sugiere Alex.
  2. Podemos usar herramientas como toad o sql developer o pl sql developer para consultar los datos en la base de datos Oracle y exportarlos a una hoja de Excel.
  3. Puede usar la herramienta ETL como informática o datastage. El lote de primavera también está disponible ahora.

Puede automatizar ambos métodos anteriores, ya sea en macros o en scripts de Unix (con conexión Oracle y código Java para convertir datos en Excel) o utilizando cualquier herramienta ETL como informática o etapa de datos.

Tengo la respuesta! deberías haber dado – “OraDynaSet.MoveNext” después de “Next j”

Funciona bien cuando se realiza este cambio.

Dim SQL como cadena
Dim OraDynaSet As Object
Dim i As Integer

SQL = “Seleccione * de Empleado donde EmpID = 20”
Establecer OraDynaSet = objDataBase.DBCreateDynaset (SQL, 0 y)

Si OraDynaSet.RecordCount> 0 Entonces
‘Hubo registros recuperados

OraDynaSet.MoveFirst

Para ICOLS = 0 a OraDynaSet.Fields.Count – 1
.Cells (1, ICOLS + 1) .Value = OraDynaSet.Fields (ICOLS) .Name
Siguiente ICOLS

‘Bucle el conjunto de registros para las filas devueltas
Para i = 0 a OraDynaSet.RecordCount – 1

Para j = 0 a ICOLS – 1
.Cells (2 + i, j + 1) = OraDynaSet.Fields (j) .Value

Siguiente j
OraDynaSet.Movenext
Siguiente yo

Normalmente, los datos de Oracle vienen en forma de texto y eso se puede convertir en Excel

con Oracle 91, la opción automática de cambiar datos a Excel está ahí: debe verificar su software y obtener esta opción

Usando JExcelapi

More Interesting

¿Calc 2 y / o más, incluso se utiliza como parte de mis trabajos más adelante en la vida?

¿Cuáles son algunas de las aplicaciones de inteligencia artificial y aprendizaje automático utilizadas en la gestión de la cartera de mercados de capital de finanzas corporativas?

¿Vale la pena tomar la rama de TI de NIT Allahabad para una persona interesada en CS?

¿Qué son "hilos sin peso" y cómo los implemento? ¿Cuáles son las ventajas de usarlos?

¿Qué tipo de personas van a DEFCON? ¿Qué tipo de personas deberían ir?

¿Qué tan robustas funciones de costos saben qué datos son atípicos?

¿Qué libros / tutoriales recomendaría a alguien que tenga curiosidad por la seguridad cibernética y el cifrado y que tampoco sepa absolutamente nada?

¿Por qué muchos graduados de Berkeley CS tienen un complejo de inferioridad?

¿Cuál es el estado actual de la generación de pruebas automatizadas en informática?

¿Qué libros sobre la lógica de segundo orden en CS me recomendarías?

¿Cuál es el método de fuerza bruta?

¿Cuál es la formación en informática en la Universidad Estatal de Michigan (MSU)?

¿Qué problemas podría resolver la inteligencia artificial en los servicios financieros?

Técnicas de procesamiento de señales junto con aprendizaje automático; se han usado juntos para el diagnóstico de fallas, mientras que ML puede hacerlo solo para CBM. ¿Por qué?

Cómo comenzar a participar en la investigación de interacción humano-computadora como estudiante universitario