Página 1 de 1
Obtener nombre de tablas de una DB SQLite [SOLUCIONADO]
Publicado: 11 Oct 2014 02:32
por Dow Sher
Hola a todos los usuarios del foro!
Estoy ayudando a mi buen amigo comprotodo con un APZ para unir varias bases de datos, pero quisiera que la aplicación fuera genérica, es decir, que pueda servirle a cualquiera pero para ello necesito algún Script, comando SQLite o lo que sea para obtener los nombres de las tablas que hay en una Base de Datos SQLite.
De ante mano, gracias
Publicado: 11 Oct 2014 12:48
por carsonzillo
si no recuerdo mal tendría que ser un comando requiriendo el nombre de tabla, algo asi:
"select name from mysqlitebbdd where type = 'tabla' and name='latabla'"
esto es para una tabla, si quieres todos los nombres de tablas podrias crear una tabla virtual donde se metan los nombres de bbdd primero con las tipicas operaciones de sqlite ( en este caso obtener los nombres de la bbdd ) y luego desde esa tabla hacer un loop para con el comando que te he dicho antes y obtener los nombres de las tablas (partiendo del nombre de la bbdd obtenida) y guardarlo en un txt o en otra tabla virtual para recuperar esos datos de tabla, no se algo así como:
--suponiendo que has obtenido el nombre previamente de la bbdd de una tabla con sqlite
--quedaria por hacer los nombres de todas las tablas
tblBBDD= {}
local sQuery = "";
local tQuery = {};
SQLite.Open(_SourceFolder.."\\tubasededatos.db");
for x, nombretabla in pairs (tblBBDD) do
sQuery ="select name from "..nombretabla.." where type = 'tabla' and name='latabla'";
tQuery = SQLite.QueryToTable(db, sQuery);
end
SQLite.Finalize(db);
tblNombresTablas= {}--creo otra tabla virtual para guardar los nombres de tablas
if tQuery.Rows ~= 0 then
for i=1,tQuery.Rows do
mistablas = tQuery.Data[i]["latabla"];--nombre de la tabla a buscar
insert.table(tbNombresTablas, table count(tbNombresTablas)+1, mistablas);
textfile.writetotable ...
end
No lo he testeado porque estoy fuera no se, pruebalo, esto es solo una idea de como podria hacerse
Publicado: 11 Oct 2014 18:25
por carsonzillo
Otra forma mas sencilla es hacer esto:
db = SQLite.Open(pon aqui la ruta a tu base de datos);
tRespuesta = SQLite.QueryToTable(db, "select * from sqlite_master where type='table'")
for n, nameTables in pairs (tRespuesta.Data) do
Dialog.Message("Resultados", tRespuesta.Data[n]["name"]);
-- o lo que se ocurra para guardar los datos (ini, txt o un listbox o lo que te salga del nabo)
end
Suerte
Publicado: 11 Oct 2014 19:38
por Dow Sher
Muchas gracias carsonzillo. Apenas veo tus respuestas voy a probar y después te cuento que paso.
Muchas gracias de nuevo.
Publicado: 12 Oct 2014 23:23
por Dow Sher
El segundo que me pasaste funciona de maravilla, de nuevo
Muchas gracias
Saludos Dow Sher

Publicado: 13 Oct 2014 00:13
por carsonzillo
Me alegra que te haya servido. Lee el manual de sqlite porque ahi esta todo. Estaria bien que posteases un ejemplo de lo que estabas haciend asi la gente sabe que hacer cuando usen el buscador.
Un saludo!
Publicado: 13 Oct 2014 00:19
por Dow Sher
carsonzillo escribió:Estaria bien que posteases un ejemplo de lo que estabas haciend asi la gente sabe que hacer cuando usen el buscador.
Si, estoy terminando un APZ para unir DB's cuando lo termine los subiré al foro.
Saludos Dow Sher

Publicado: 13 Oct 2014 23:24
por Pabloko
esta consulta sirve para obtener un listado de tablas
SELECT name FROM my_db.sqlite_master WHERE type='table';
Publicado: 14 Oct 2014 02:13
por comprotodo201480
Pues muchas gracias a Dow por el ejemplillo, estaba en la nube para unir 12mil encuestas de 6 db y formar una sola, me ha funcionado de maravilla me han salvado el rato de trabajo y en 3 minutitus he logrado unificar todo.
Gracias a Dow a el todo el credito y a Carzoncillo eres un genio amigo, me habia matado 1 noche intentando como hacerlo y el resultado fue lo mas simple pero efectivo.
A todos muchas gracias ( Dow Y Carsoncillo) un abarzote !