在Bash脚本的循环中写入insert语句时,如何使用SQLite事务?

在Bash脚本的循环中写入insert语句时,如何使用SQLite事务?,bash,sqlite,loops,transactions,Bash,Sqlite,Loops,Transactions,我已经编写了一个脚本,用于将数据批量插入SQLite数据库。我已经读到,如果我将insert语句包含在一个事务中,我可以使脚本更快。这似乎对我不起作用,我想是因为我在循环中多次调用sqlite3 function a { x=1 sqlite3 test.db "BEGIN TRANSACTION" while [[ $x -le `wc -l <<< "$l"` ]] do a=`sed $x!d <<< $l` b=`sed $x!d <<&l

我已经编写了一个脚本,用于将数据批量插入SQLite数据库。我已经读到,如果我将insert语句包含在一个事务中,我可以使脚本更快。这似乎对我不起作用,我想是因为我在循环中多次调用sqlite3

function a {
x=1
sqlite3 test.db "BEGIN TRANSACTION"
while [[ $x -le `wc -l <<< "$l"` ]]
do
a=`sed $x!d <<< $l`
b=`sed $x!d <<< $o`
echo -ne "Unos: "$x / "$(wc -l <<< $l)" \\r
sqlite3 test.db "INSERT INTO table ("l","o") VALUES ('$a','$b')"
x=$[$x+1]
done
sqlite3 test.db "COMMIT;"
}
函数a{
x=1
sqlite3 test.db“开始事务”

当[[$x-le`wc-l时,您可以重新编写您的函数,以便所有这些命令的标准输出都可以一次性重定向到sqlite的管道:

function a {
  x=1
  (echo "BEGIN TRANSACTION;"
   while [[ $x -le `wc -l <<< "$l"` ]]
   do
    a=`sed $x!d <<< $l`
    b=`sed $x!d <<< $o`
    echo -ne "Unos: "$x / "$(wc -l <<< $l)" \\r
    echo "INSERT INTO table ("l","o") VALUES ('$a','$b');"
    x=$[$x+1]
  done
  echo "COMMIT;") | sqlite3 test.db
}
函数a{
x=1
(echo)开始交易

谢谢,这是我想要的!我感谢你的帮助