tutorial studio portable manager descargar sqlite

portable - sqlite studio



Cómo obtener una lista de nombres de columnas (7)

Es posible obtener una fila con todos los nombres de columna de una tabla como esta:

|id|foo|bar|age|street|address|

No me gusta usar Pragma table_info(bla) .


El conjunto de resultados de una consulta en PHP ofrece un par de funciones que permiten eso:

numCols() columnName(int $column_number )

Ejemplo

$db = new SQLIte3(''mysqlite.db''); $table = ''mytable''; $tableCol = getColName($db, $table); for ($i=0; $i<count($tableCol); $i++){ echo "Column $i = ".$tableCol[$i]."/n"; } function getColName($db, $table){ $qry = "SELECT * FROM $table LIMIT 1"; $result = $db->query($qry); $nCols = $result->numCols(); for ($i = 0; $i < $ncols; $i++) { $colName[$i] = $result->columnName($i); } return $colName; }


Esto ayuda con HTML5 SQLite:

tx.executeSql(''SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "your_table_name";'', [], function (tx, results) { var columnParts = results.rows.item(0).sql.replace(/^[^/(]+/(([^/)]+)/)/g, ''$1'').split('',''); ///// RegEx var columnNames = []; for(i in columnParts) { if(typeof columnParts[i] === ''string'') columnNames.push(columnParts[i].split(" ")[0]); } console.log(columnNames); ///// Your code which uses the columnNames; });

Puede volver a utilizar la expresión regular en su idioma para obtener los nombres de las columnas.

La alternativa más corta:

tx.executeSql(''SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "your_table_name";'', [], function (tx, results) { var columnNames = results.rows.item(0).sql.replace(/^[^/(]+/(([^/)]+)/)/g, ''$1'').replace(/ [^,]+/g, '''').split('',''); console.log(columnNames); ///// Your code which uses the columnNames; });


Pruebe este analizador de esquema de tabla sqlite. Implementé el analizador de tablas sqlite para analizar las definiciones de tabla en PHP.

Devuelve las definiciones completas (clave única, principal, tipo, precisión, no nulo, referencias, restricciones de tabla ... etc.)

https://github.com/maghead/sqlite-parser


Si está utilizando el shell de línea de comandos para SQLite, entonces .headers on antes de realizar su consulta. Solo necesita hacer esto una vez en una sesión determinada.


Usando la respuesta de @ Tarkus, aquí están las expresiones regulares que utilicé en R:

getColNames <- function(conn, tableName) { x <- dbGetQuery( conn, paste0("SELECT sql FROM sqlite_master WHERE tbl_name = ''",tableName,"'' AND type = ''table''") )[1,1] x <- str_split(x,"//n")[[1]][-1] x <- sub("[()]","",x) res <- gsub( ''"'',"",str_extract( x[1], ''".+"'' ) ) x <- x[-1] x <- x[-length(x)] res <- c( res, gsub( "//t", "", str_extract( x, "//t[0-9a-zA-Z_]+" ) ) ) res }

El código es un poco descuidado, pero parece funcionar.


$<? $db = sqlite_open(''mysqlitedb''); $cols = sqlite_fetch_column_types(''form name''$db, SQLITE_ASSOC); foreach ($cols as $column => $type) { echo "Column: $column Type: $type/n"; }


SELECT sql FROM sqlite_master WHERE tbl_name = ''table_name'' AND type = ''table''

A continuación, analice este valor con Reg Exp (es fácil) que podría ser similar a esto: [(.*?)]

Alternativamente puedes usar:

PRAGMA table_info(table_name)