我想从bash中的数组创建表。我已经想出了如何让它从文本文件创建数组,但是创建表或者不起作用,或者它只使用数组中的最后一个值。我想做一些不可能的事情吗?从BASH Array创建SQLite3表
我的脚本:
readarray -t array < file.txt
for e in "${array[@]}"
do
DB_PATH=""
DB_NAME=$DB_PATH"Test.db"
sqlite3 $DB_NAME << EOF
DROP TABLE IF EXISTS tblA;
CREATE TABLE tblA(A,B,C);
INSERT INTO tblA (A,B) SELECT tblB.A,tblB.B,1 FROM tblB WHERE tblB.D="$e";
EOF
done
我也试过WHERE tblB.D="${array[@]}";
编辑,包括整个SQL代码。
我在SQL专家,但如果你已经删除的表,我不相信你可以做一个'INSERT ... WHERE',因为如果你丢掉了桌子,什么都没有。完全可能无法使用WHERE和INSERT。 –
@MarkSetchell旧表被删除,然后使用新的数组值重新创建。 WHERE语句在INSERT中工作,而不是在这种情况下。如果我调用数组中的每个值,特别是WHERE tblB.D =“$ {array [0]}”或WHERE tblB.D =“$ {array [1]}”等,它将起作用;然而,当数组中有超过100个值时,我宁愿不必特别叫出它们。 – taylorbuckeye
也许显示您的完整代码,以便我能理解... –