Quero migrar meu aplicativo do iPhone para uma nova versão do banco de dados. Como não tenho uma versão salva, preciso verificar se existem nomes de colunas.
Esta entrada Stackoverflow sugere fazer a seleção
SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'
e analise o resultado.
Essa é a maneira comum? Alternativas?
SQLite.swift
, consulte esta pergunta e resposta para uma simples lista de nomes de coluna ou um presente para a migração questões.Respostas:
você receberá uma lista de todos os nomes de colunas.
fonte
create temporary table TmpCols (cid integer, name text, type text, nn bit, dflt_value, pk bit); .mode insert TmpCols .output cols PRAGMA TABLE_INFO('yourtable'); .read cols .mode csv .output stdout
db.rawQuery("PRAGMA table_info(" + tablename + ")", null);
Se você possui o banco de dados sqlite, use o programa de linha de comando sqlite3 e estes comandos:
Para listar todas as tabelas no banco de dados:
Para mostrar o esquema de um dado
tablename
:fonte
PRAGMA table_info(table_name);
Se você fizer
você obterá o resultado desejado.
fonte
.sqliterc
arquivo .PRAGMA
método e o.schema
método não funcionaram para mim. Mas este funciona muito bem.Apenas para super noobs como eu, me perguntando como ou o que as pessoas queriam dizer com
Você deseja usar isso como sua declaração de preparação, como mostrado abaixo. Fazer isso seleciona uma tabela com esta aparência, exceto que é preenchida com valores pertencentes à sua tabela.
Onde id e nome são os nomes reais de suas colunas. Portanto, para obter esse valor, você precisa selecionar o nome da coluna usando:
O que retornará o nome da coluna da linha atual. Para pegar todos eles ou encontrar o que você deseja, você precisa percorrer todas as linhas. A maneira mais simples de fazer isso seria da maneira abaixo.
fonte
Se você deseja que a saída de suas consultas inclua nomes de colunas e seja alinhada corretamente como colunas, use estes comandos em
sqlite3
:Você obterá saída como:
fonte
Para obter uma lista de colunas, você pode simplesmente usar:
fonte
Uma maneira alternativa de obter uma lista de nomes de colunas não mencionados aqui é selecionar a partir de uma função pragma:
Você pode verificar se existe uma determinada coluna executando:
É isso que você usa se não deseja analisar o resultado de sql selecionado em sqlite_master ou pragma table_info.
Referência:
https://www.sqlite.org/pragma.html#pragfunc
fonte
Quando você executa o
sqlite3
cli, digitando:também dará o resultado desejado
fonte
você pode usar a instrução Like se estiver procurando por uma coluna específica
ex:
fonte
Eu sei que é um tópico antigo, mas recentemente eu precisava do mesmo e encontrei uma maneira elegante:
fonte
where t.name = 'table';
Para obter as informações da coluna, você pode usar o seguinte snippet:
fonte
fonte
.schema no console sqlite quando você está dentro da tabela, parece algo assim para mim ...
fonte
fonte
fonte
Eu sei que é tarde demais, mas isso ajudará outros.
Para encontrar o nome da coluna da tabela, você deve executar
select * from tbl_name
e obterá o resultadosqlite3_stmt *
. e verifique a coluna iterar sobre o total da coluna buscada. Consulte o seguinte código para o mesmo.Isso imprimirá todos os nomes de coluna do conjunto de resultados.
fonte
.schema table_name
Isso listará os nomes das colunas da tabela no banco de dados.
Espero que isso ajude !!!
fonte
Talvez você queira apenas imprimir os cabeçalhos da tabela no console. Este é o meu código: (para cada tabela)
fonte