bash:检查sqlite是否有schema和alter table

wwtsj6pe  于 2023-05-18  发布在  SQLite
关注(0)|答案(1)|浏览(123)

我有两个工作代码块。
第一个检查sqlite3DB是否具有特定的模式

#!/bin/bash

if sqlite3 my.db <<< .schema | grep -qi 'create table my_data'; then
    echo "all good"
fi

第二个将两个新列广告到现有DB

#!/bin/bash

sqlite3 my.db <<EOS
    ALTER TABLE my_data ADD col1 JSON DEFAULT "{}" NOT NULL;
    ALTER TABLE my_data ADD col2 REAL DEFAULT "0.0" NOT NULL;
EOS

现在我想把它们结合起来

if schema exists
    add col1
    add col2
fi

但不幸的是我没法让它运转

mhd8tkvw

mhd8tkvw1#

if sqlite3 my.db ".schema my_data" | grep -q 'CREATE TABLE my_data'; then
    sqlite3 my.db "ALTER TABLE my_data ADD col1 JSON DEFAULT '{}' NOT NULL";
    sqlite3 my.db "ALTER TABLE my_data ADD col2 REAL DEFAULT 0.0 NOT NULL";
fi

好吧,我自己解决得更快了:)

相关问题