Estoy usando Perl DBI. Sé que $dbase->tables()
devolverá todas las tablas en la base de datos correspondiente. Del mismo modo, quiero saber los esquemas disponibles en la base de datos. ¿Hay alguna función disponible para eso?¿Cómo obtengo los esquemas de DBI de Perl?
Respuesta
Lo que estamos buscando es: DBI->table_info()
Llamada así:
my $sth = $dbh->table_info('', '%', '');
my $schemas = $dbh->selectcol_arrayref($sth, {Columns => [2]});
print "Schemas: ", join ', ', @$schemas;
Escribí un script basado en esta idea ayer, pero 'DBI :: ODBC' no admite' table_info', y necesito acceso a '* .mdb'. – reinierpost
PD: ¡sí lo admite cuando los primeros dos argumentos son undef! – reinierpost
DBD :: ODBC ciertamente soporta table_info. Necesita leer las especificaciones ODBC para lo que necesita pasar a table_info. También puede necesitar la corrección de errores en 1.46_1 - vea http://search.cpan.org/~mjevans/DBD-ODBC-1.46_2/Changes#1.46_1_2013-11-16 – bohica
Esto funciona.
Crear una base de datos:
echo 'create table foo (bar integer primary key, quux varchar(30));' | sqlite3 foobar.sqlite
programa de Perl para imprimir esquema:
use 5.010;
use Data::Dumper qw(Dumper);
use DBIx::Class::Schema::Loader qw();
DBIx::Class::Schema::Loader->naming('current');
DBIx::Class::Schema::Loader->use_namespaces(1);
my $dbi_dsn = 'dbi:SQLite:dbname=foobar.sqlite';
my ($dbi_user, $dbi_pass);
my $schema = DBIx::Class::Schema::Loader->connect(
$dbi_dsn, $dbi_user, $dbi_pass, {'AutoCommit' => 1, 'RaiseError' => 1,}
);
for my $source_name ($schema->sources) {
say "*** Source: $source_name";
my $result_source = $schema->source($source_name);
for my $column_name ($result_source->columns) {
say "Column: $column_name";
say Dumper $result_source->column_info($column_name);
}
}
Salida:
*** Source: Foo
Column: bar
$VAR1 = {
'data_type' => 'integer',
'is_auto_increment' => 1,
'is_nullable' => 1
};
Column: quux
$VAR1 = {
'data_type' => 'varchar',
'is_nullable' => 1,
'size' => 30
};
Uso de ODBC para una base de datos Oracle, he tenido que utilizar esta variación en la respuesta del tío Arnie:
my $table_info = $dbh->table_info(undef, '%', undef);
my $schemas = $table_info->fetchall_arrayref([1]);
print "Schemas :\n",
join("\n", map {$_->[0]} @$schemas), "\n";
De lo contrario, $schemas
sería indefinido cuando se intenta utilizar selectcol_arrayref($sth, ...)
.
- 1. Perl DBI - Errores de captura
- 2. Acelerar Perl DBI fetchrow_hashref
- 3. Perl DBI fetchall_hashref
- 4. Perl DBI alternativa a LongReadLen
- 5. ¿Cómo puedo manejar unicode con DBI de Perl?
- 6. ¿Cómo puedo mostrar el tiempo de consulta en Perl, DBI?
- 7. Perl, DBI y el delimitador MySQL
- 8. ¿Cuál es el equivalente Python de DBI de Perl?
- 9. Perl DBI: ¿cómo ver la consulta fallida con valores encuadernados?
- 10. manejo de grandes transacciones largas con perl dbi
- 11. Perl DBI sin acceder a la base de datos
- 12. ¿Cómo obtengo una lista de todos los esquemas en una base de datos del servidor Sql?
- 13. ¿Puedo usar multihebra con DBI y Oracle de Perl?
- 14. ¿Cómo puedo obtener los nombres de las columnas y los datos de las filas en orden con DBI en Perl?
- 15. ¿Cómo puedo obtener el nombre de la base de datos de un manejador Perl MySQL DBI?
- 16. ¿Cómo puedo imprimir la consulta SQL ejecutada después de que DBI de Perl rellene los marcadores de posición?
- 17. ¿Cómo puedo seleccionar las filas que son nulas usando consultas enlazadas en DBI de Perl?
- 18. ¿Cómo obtengo una tabla de texto en Perl?
- 19. ¿Cómo obtengo una lista de directorios en Perl?
- 20. ¿Cómo obtengo el nombre dir de un archivo con Perl?
- 21. ¿Cómo obtengo el resultado de un comando externo en Perl?
- 22. ¿Cómo obtengo el usuario actual en Perl de manera portátil?
- 23. ¿Cómo obtengo la longitud de una cadena en Perl?
- 24. Esquemas de recursión para los maniquíes?
- 25. ¿Cómo maneja Entity Framework los esquemas de SQL Server?
- 26. ¿Existe un equivalente de mysql_real_escape_string() de PHP para DBI de Perl?
- 27. ¿Cómo obtengo los datos de UIImagePickerControllerReferenceURL?
- 28. ¿Cómo obtengo los valores clave de $ _POST?
- 29. ¿Cómo obtengo los códigos de MKAnnotationView?
- 30. ¿Cómo obtengo los suscriptores de un evento?
http://dbi.perl.org/ – Ether