una tipos que eliminar drop datos como columna column acepta sqlite sqlite3 alter-table

tipos - Modificar el tipo de una columna en sqlite3



tipos de datos que acepta sqlite (4)

Es posible recreando la tabla. Su trabajo para mí sigue el siguiente paso:

  1. crea una tabla temporal usando como seleccionar * de tu mesa
  2. suelta tu tabla, crea tu tabla usando el tipo de columna de modificación
  3. ahora inserte registros de la tabla temporal en su tabla recién creada
  4. soltar tabla temporal

realice todos los pasos anteriores en el subproceso de trabajo para reducir la carga en uithread

Soy bastante nuevo en SQLite 3 y ahora tenía que agregar una columna a una tabla existente que tenía. Fui a hacer eso haciendo: ALTER TABLE thetable ADD COLUMN category; .

Por supuesto, olvidé especificar el tipo de columna. Lo primero que pensé hacer fue dejar caer esa columna y luego volver a agregarla. Sin embargo, parece que SQLite no tiene una forma simple de hacer esto, y yo tendría que hacer una copia de seguridad de la tabla y volver a crearla sin la columna.

Esto parece desordenado, y me preguntaba si habría alguna forma de modificar / agregar el tipo de una columna. Me lo imaginaba, pero mi búsqueda no arrojó ningún resultado, siendo nuevo en SQLite, imagino que fue debido a que mi redacción no estaba en la consulta.



Si prefiere una GUI, DB Browser para SQLite lo hará con unos pocos clics.

  1. "Archivo" - "Abrir base de datos"
  2. En la pestaña "Estructura de la base de datos", haga clic en el contenido de la tabla (no en el nombre de la tabla), luego en el menú "Editar", "Modificar tabla", y ahora puede cambiar el tipo de datos de cualquier columna con un menú desplegable. Cambié un campo de ''texto'' a ''numérico'' para recuperar datos en un rango numérico.

DB Browser for SQLite es de código abierto y gratuito. Para Linux está disponible desde el repositorio.


#!/bin/bash DB=/tmp/synapse/homeserver.db TABLE="public_room_list_stream" FIELD=visibility OLD="BOOLEAN NOT NULL" NEW="INTEGER NOT NULL" TMP=/tmp/sqlite_$TABLE.sql echo "### create dump" echo ".dump ''$TABLE''" | sqlite3 "$DB" >$TMP echo "### editing the create statement" sed -i "s|$FIELD $OLD|$FIELD $NEW|g" $TMP read -rsp $''Press any key to continue deleting and recreating the table $TABLE .../n'' -n1 key echo "### rename the original to ''$TABLE"_backup"''" sqlite3 "$DB" "PRAGMA busy_timeout=20000; ALTER TABLE ''$TABLE'' RENAME TO ''$TABLE"_backup"''" echo "### delete the old indexes" for idx in $(echo "SELECT name FROM sqlite_master WHERE type == ''index'' AND tbl_name LIKE ''$TABLE""%'';" | sqlite3 $DB); do echo "DROP INDEX ''$idx'';" | sqlite3 $DB done echo "### reinserting the edited table" cat $TMP | sqlite3 $DB