从多个.db文件中批量提取

时间:2019-06-13 11:33:40

标签: sqlite batch-file

我有很多.db sqlite3文件。文件位于单独的子文件夹中,并且大多数文件具有相同的文件名:base.db。 每个文件都包含一个表“ main”,我想从每个.db文件中提取表以分离为单独的csv文件,以便将每个csv提取到.db文件旁边的同一子文件夹中。

我尝试过使用此脚本

cd C:\sqlite-tools-win32-x86
for /R %%G in (*.db) do sqlite3 -csv -header "%%G" "select * from main" > %%~nG.csv

问题是,此脚本正在从子文件夹读取.db文件,但提取了根目录下的csv文件,并且还覆盖了以前的csv文件。 我希望解释清楚。知道如何解决吗?

1 个答案:

答案 0 :(得分:3)

您正在将输出重定向到%%~nG,由于~n修饰符,它是基本名称。要获取父目录的完整路径,请同时使用~d and ~p

cd /D "C:\sqlite-tools-win32-x86"
for /R %%G in (*.db) do (
    sqlite3 -csv -header "%%~G" "select * from main" > "%%~dpnG.csv"
)

我还用cd /D替换了cd,以防万一也要更改驱动器。