Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 根据IDRow的不同生成多个csv文件_Linux_Database_Bash_Sqlite_Csv - Fatal编程技术网

Linux 根据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

我有一个小脚本,它从表中获取值,然后放入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
    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循环找到了解决方案。谢谢