如果表在SQLite中有0行,则返回错误

时间:2019-03-08 19:37:57

标签: sql database validation sqlite

我想对数据库构建进行验证后过程,该过程将创建表架构并每晚每晚批量加载几个TSV。我想验证大容量加载过程实际上是否成功,所以我想检查每个表是否不为空(SELECT COUNT(*) FROM table_name> 0),如果为空则返回错误。

这是一种方法吗?或任何解决方法或验证策略?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以从命令行运行select命令,然后使用所使用的任何shell评估结果。看到这个例子。

创建表格

> sqlite3 test.db

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER);
INSERT INTO "Cars" VALUES(1,'Audi',52642);
INSERT INTO "Cars" VALUES(2,'Mercedes',57127);
INSERT INTO "Cars" VALUES(3,'Skoda',9000);
INSERT INTO "Cars" VALUES(4,'Volvo',29000);
INSERT INTO "Cars" VALUES(5,'Bentley',350000);
INSERT INTO "Cars" VALUES(6,'Citroen',21000);
INSERT INTO "Cars" VALUES(7,'Hummer',41400);
INSERT INTO "Cars" VALUES(8,'Volkswagen',21600);
COMMIT;

Bash脚本以测试表Cars是否为空

if [ "`sqlite3 test.db 'select count(*) from Cars;'`" != "0" ]
then
   echo "Not empty"
fi

结果

Not empty

当然,您可以将echo "Not empty"替换为exit 1以退出脚本并引发错误。