我想对数据库构建进行验证后过程,该过程将创建表架构并每晚每晚批量加载几个TSV。我想验证大容量加载过程实际上是否成功,所以我想检查每个表是否不为空(SELECT COUNT(*) FROM table_name
> 0),如果为空则返回错误。
这是一种方法吗?或任何解决方法或验证策略?
非常感谢!
答案 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
以退出脚本并引发错误。