Linux 根据IDRow的不同生成多个csv文件
我有一个小脚本,它从表中获取值,然后放入csv文件中。问题是我无法根据IDRow生成多个csv文件Linux 根据IDRow的不同生成多个csv文件,linux,database,bash,sqlite,csv,Linux,Database,Bash,Sqlite,Csv,我有一个小脚本,它从表中获取值,然后放入csv文件中。问题是我无法根据IDRow生成多个csv文件 if [ "$1" = "" ] then echo "Database path" exit 1 fi if [ "$2" = "" ] then echo "Csv file output path" exit 1 fi db=$1 t=($(sqlite3 $db ".tables 'myTable'")) for i in "${t[@]}" do s
if [ "$1" = "" ]
then
echo "Database path"
exit 1
fi
if [ "$2" = "" ]
then
echo "Csv file output path"
exit 1
fi
db=$1
t=($(sqlite3 $db ".tables 'myTable'"))
for i in "${t[@]}"
do
sqlite3 $db<<- EXIT_HERE
.mode csv
.separator ;
.output $2/$i.csv
SELECT IDRow,strftime('%d-%m-%Y %H:%M:%S',Date),Value FROM $i order by IDRow;
.exit
EXIT_HERE
echo "$i.csv generated"
done
如果[“$1”=”]
然后
回显“数据库路径”
出口1
fi
如果[“$2”=”]
然后
回显“Csv文件输出路径”
出口1
fi
db=$1
t=($(sqlite3$db.tables'myTable'))
对于“${t[@]}”中的i
做
sqlite3$db这是我找到的解决方案
if [ "$1" = "" ]
then
echo "Database path"
exit 1
fi
if [ "$2" = "" ]
then
echo "Csv file output path"
exit 1
fi
db=$1
t=($(sqlite3 $db ".tables"))
row=(sqlite3 $1 "select IDRow from mytable group by IDRow")
for i in "${row[@]}"; do
for j in "${table[@]}"; do
sqlite3 $db<<- EXIT_HERE
.mode csv
.separator ;
.output $2/$i.csv
SELECT IDRow,Date,Value FROM $j order by IDRow=$i;
.exit
EXIT_HERE
done
done
如果[“$1”=”]
然后
回显“数据库路径”
出口1
fi
如果[“$2”=”]
然后
回显“Csv文件输出路径”
出口1
fi
db=$1
t=($(sqlite3$db.tables)))
行=(sqlite3$1“按IDRow从mytable组中选择IDRow”)
对于“${row[@]}”中的i;做
对于“${table[@]}”中的j;做
sqlite3$Db您已经有了表名的循环。添加另一个循环。在
orderby`之前添加WHERE id_row='$i'。祝你好运。我通过添加另一个查询和for循环找到了解决方案。谢谢