英文:
bash: check if sqlite has schema and alter table
问题
我有两个工作的代码块。
第一个检查我的sqlite3数据库是否具有特定的模式
#!/bin/bash
if sqlite3 my.db <<< .schema | grep -qi 'create table my_data'; then
echo "all good"
fi
第二个向现有数据库添加了两个新列
#!/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 模式存在
添加 col1
添加 col2
fi
但不幸的是,我无法让它正常运行。
英文:
I have 2 working blocks of code.
The first checks, whether my sqlite3 DB has a particular schema
#!/bin/bash
if sqlite3 my.db <<< .schema | grep -qi 'create table my_data'; then
echo "all good"
fi
The second ads two new columns to the existing 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
Now I would like to combine them to
if schema exists
add col1
add col2
fi
but unfortunately, I don't get it running.
答案1
得分: 0
以下是翻译好的部分:
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
ok, got faster to the solution myself :)
英文:
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
ok, got faster to the solution myself
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论