Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
对一个目录中的多个数据库循环SQLite查询,以对正命中进行排序(UNIX)_Sqlite_Unix_Loops - Fatal编程技术网

对一个目录中的多个数据库循环SQLite查询,以对正命中进行排序(UNIX)

对一个目录中的多个数据库循环SQLite查询,以对正命中进行排序(UNIX),sqlite,unix,loops,Sqlite,Unix,Loops,我有一个包含很多SQLite数据库文件的目录 我需要运行sqlite3查询,以确定我的目录中是否有任何数据库包含特定的表。数据库文件名类似于001.db、002.db等。如果数据库包含我需要的表,则会将文件复制到其他目录 我最初的想法与此类似: 而[sqlite3$*“从表1中选择*!=”错误:没有这样的错误 表:表1“]` 做 cp$*newdir/ 完成 或者类似的东西,我需要一些帮助来纠正语法 在“$*”中,我指的是目录中当前正在处理的数据库文件,不确定它是否正确…首先,不需要在表中进行选

我有一个包含很多SQLite数据库文件的目录

我需要运行sqlite3查询,以确定我的目录中是否有任何数据库包含特定的表。数据库文件名类似于001.db、002.db等。如果数据库包含我需要的表,则会将文件复制到其他目录

我最初的想法与此类似:

而[sqlite3$*“从表1中选择*!=”错误:没有这样的错误 表:表1“]`

cp$*newdir/

完成

或者类似的东西,我需要一些帮助来纠正语法


在“$*”中,我指的是目录中当前正在处理的数据库文件,不确定它是否正确…

首先,不需要在表中进行选择以查看它是否存在。你可以这样做:

SELECT * FROM dbname.sqlite_master WHERE type='table';
for i in `ls *.db`; do
    HAS_TABLE=`sqlite "${i}" "select count(*) ....;"
    if [[ ${HAS_TABLE} == "1" ]]; then
      cp ${i} some/other/dir/${i}
    fi
done
或者调整它以进行计数:

SELECT count(*) FROM dbname.sqlite_master WHERE type='table' and name='table_name';
使用sqlite命令行,您应该得到一个“1”或“0”。您可以使用它来确定DB是否真的有您想要的表,并相应地采取行动。脚本可能看起来像:

SELECT * FROM dbname.sqlite_master WHERE type='table';
for i in `ls *.db`; do
    HAS_TABLE=`sqlite "${i}" "select count(*) ....;"
    if [[ ${HAS_TABLE} == "1" ]]; then
      cp ${i} some/other/dir/${i}
    fi
done
我是从内存中写的,因此if/条件的语法可能有点不正确(如果
1
值周围没有引号,您可能就可以了)


嗯,

谢谢。我主要关心的是在命令上执行一个循环,将命中率为正的数据库复制到一个新目录。