Página 1 de 2

Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-05 14:37 @650
por seafree
Hola, ¿alguien conocerá cómo lograr la conexión a los datos TSDB desde Perl?

La manera en que logro la conexión a la base de datos de PostgreSQL es:

$dbh = DBI->connect("DBI:Pg:dbname=nombre_db;host=localhost", "usuario", "", {'RaiseError' => 1});

Supongo que la conexión hacia la base de datos TSDB es similar a excepción del identificador de la base de datos. Para PostgreSQL, "Pg". Para la base de datos TSDB, ¿cuál sería?

Gracias.

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-05 16:07 @713
por explorer
El único sistema TSDB que conozco, con soporte en Perl, es RRDtool.

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-06 11:12 @508
por seafree
Ok, gracias, solo a través de RRDtool, bien.

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-10 04:06 @213
por explorer
¿No nos puedes dar más detalles sobre la base de datos? Tipo de conexión, cómo se llama el motor, etc.

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-10 14:50 @659
por seafree
Sí, mira, solo sé que son datos seriales de los cuales se desea la automatización del reporte. La conexión se logra a través de un PIJDBC, y la Prueba de Conexión se logra a través de $java GetSnap. El sistema operativo que estoy usando es Centos 7.

Y al terminar la prueba uno de los mensajes que envía es:

PI SQL Data Access Server #.#.####.# using PIOLEDB

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-10 15:47 @699
por explorer
Sí, sí que es posible conectarse a esas mierdas de Microsoft.

Aquí tienes un ejemplo, sacado de aquí.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2.  
  3. use Win32;
  4. use Win32::OLE qw( in with);
  5.  
  6. *error = *Win32::OLE::LastError;
  7.  
  8. # Create a connection object
  9. our $conn = Win32::OLE->new('ADODB.Connection');
  10. die error() if error();
  11.  
  12. # Create a command object to use for queries.
  13. our $cmd = Win32::OLE->new('ADODB.Command');
  14. die error() if error();
  15.  
  16. # set the provider for the connection
  17. $conn->{Provider} = "PIOLEDB.1";
  18.  
  19. # open the connection. This is where all but the provider should go.
  20. # sometimes, the provider can go in this string instead of above.
  21. # this is the area where the connection string goes.
  22.  
  23. $conn->Open("Data Source=hanyonge6230;Initial Catalog=piarchive;Integrated Security=SSPI");
  24. die error() if error();
  25.  
  26.  
  27. # we have to associate the command object with a connection
  28. # in order to be able to use it.
  29. $cmd->{ActiveConnection} = $conn;
  30.  
  31. # set the sql query text.
  32. #$cmd->{CommandText} = "select tag, CAST(time AS string) time, value, status from piarchive..pisnapshot where tag='cdt158'";
  33. $cmd->{CommandText} = "select tag, CAST(time AS string) time, value, DigString(status) status from piarchive..picomp2 where tag='cdt158' and time between '*-1d' and '*'";
  34. die error() if error();
  35.  
  36. # execute the command object and get the result set to work with.
  37. our $rs = $cmd->execute();
  38. die error() if error();
  39.  
  40. # prime to the first row in the result set.
  41. $rs->MoveFirst();
  42.  
  43. while (! $rs->eof())
  44. {
  45.         # get the value stored in the 'name' column
  46.                 print $rs->fields('tag')->{value} . ":";
  47.                 print $rs->fields('time')->{value} . ":";
  48.                 print $rs->fields('value')->{value} . ":";
  49.         print $rs->fields('status')->{value} . "\n";
  50.         $rs->MoveNext();
  51. }
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-11 10:44 @489
por seafree
Gracias, explorer. Al compilar me envía el error:

Can't locate Win32.pm in @INC (you may need to install the Win32 module)

Lo busqué desde: http://search.cpan.org/search?query=Win32.pm&mode=all

Solo muestra: Win32::PEPM::Build. ¿Será suficiente la instalación de éste?

Gracias.

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-11 11:50 @535
por explorer
No, debes instalar precisamente el módulo que te dice, Win32.

Debes usar tu gestor de paquetes Perl para que te lo instale.

En el subforo de formación tienes guías para la instalación de módulos, uno de ellos para ActiveState o ActivePerl.

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-17 14:07 @630
por seafree
Descargo el módulo que sugieres, Win32, desde https://metacpan.org/pod/Win32.
Hago su instalación manual:
#perl Makefile.PL
Envia: OS unsupported

Así mismo también instalé el ActivePerl-5.24 y lo accedo desde web file:///opt/ActivePerl-5.24/html/index.html

Te agradeceré tu ayuda para su instalación porque ya no sé qué hacer, gracias mil.

Re: Conexión a Time Series Database (TSDB)

NotaPublicado: 2018-04-17 15:27 @685
por explorer
A ver... no nos volvamos locos.

¿Por qué has instalado ActivePerl? ¿Qué Perl tenías instalado antes? ¿Sabes que en Windows es peligroso tener dos Perl instalados a la vez?

¿Qué significa que accedes "desde web file"? ¿Estás queriendo hacer un programa en un ordenador para usarse en otro ordenador? ¿Son el mismo sistema operativo? Por la ruta que pones, yo diría que eso no es Windows. /opt... indica un sistema Linux/Unix/Mac OSX.

Menudo follón...

En cuanto a la instalación del módulo, se nota que no has leído las guías que te he enlazado. Si estás usando ActivePerl debes usar el PPM para instalar los módulos. Pulsa, en mi anterior mensaje, sobre el enlace ActiveState, y sigues el procedimiento para instalar los módulos que necesites.

De hecho, apostaría a que ActivePerl ya instala Win32 de base.

Postdata: pues no. Pero sí se puede instalar con PPM.