Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证SQLite表架构_Sql_Sqlite_Schema - Fatal编程技术网

验证SQLite表架构

验证SQLite表架构,sql,sqlite,schema,Sql,Sqlite,Schema,在使用表之前,我需要验证表的模式是否与正在执行的代码完全对应。我知道有一个命令.schema tablename,它的结果可以散列并与实际模式的散列进行比较。问题是存储的模式包含创建表时使用的所有多余字符(重复制表符、空格、新行字符),如果在下一版本代码中更改模式中的空格数,则无法识别该表 我不想手动解析每一列的所有属性 我不能仅仅通过split&join或regexp删除重复的空格,因为有时它们并不重复,但仍然过多(例如,在左括号附近) 这看起来像是一项非常常见的任务——验证表的模式——但我看

在使用表之前,我需要验证表的模式是否与正在执行的代码完全对应。我知道有一个命令
.schema tablename
,它的结果可以散列并与实际模式的散列进行比较。问题是存储的模式包含创建表时使用的所有多余字符(重复制表符、空格、新行字符),如果在下一版本代码中更改模式中的空格数,则无法识别该表

我不想手动解析每一列的所有属性

我不能仅仅通过split&join或regexp删除重复的空格,因为有时它们并不重复,但仍然过多(例如,在左括号附近)

这看起来像是一项非常常见的任务——验证表的模式——但我看不到有效实现该任务的方法

UPD


我考虑的另一种可能的方法是:创建一个临时表,并使用一些内部sqlite函数将其模式与目标表的模式进行比较。它能工作吗

可能的解决方案:
PRAGMA schema\u版本
PRAGMA用户版本


有几种使用它们来验证表的方案的变体,但我相信您会找到合适的方法

可以通过编程实现吗?如果是这样,首先获取所有表的列表(
.tables
),然后针对每个表运行
pragma table\u info(table)@Dan这就是我所说的“手动解析每一列及其所有属性”的意思。这是可能的,但确实如此hard@Dan我理想的验证只是比较两个散列