我的组织使用批处理文件对我们的数据库执行查询,我遇到了一种情况,即我需要执行一个太大而无法一次完成的查询。所以我所做的是修改一个批处理文件来循环一个文本文件并单独查询每一行并将结果附加到输出文件中。
问题是当我回显查询变量时,它的读取完全符合预期,但是当我将它传递给 ogr 代替 sql 字符串时,它似乎是空白的。我不确定我是否做错了什么,或者我想要做的事情是不可能的。谁能澄清这里发生了什么?
SET Path=\\my\path\blah\gdal\bin
SET GDAL_DATA=\\my\path\blah\gdal\data
@echo off
SET "file=C:\filepath.txt"
SET /A i=0
REM put file into array line by line
for /F "usebackq delims=" %%a in ("%file%") DO (
set /A i+=1
call set array[%%i%%]=%%a
call set n=%%i%%
)
REM Loop through array entries
for /L %%i in (1,1, %n%) DO (
REM Create SQL String
call set "queryStart="SELECT * FROM _tablename WHERE _fieldname IN ('"
call set uid=%%array[%%i]%%
call set "queryEnd=')""
call set call set "fullQuery=%%queryStart%%%%uid%%%%queryEnd%%"
REM Database Request
ogr2ogr -skipfailures -update -append -s_srs EPSG:4326 -t_srs EPSG:4326 -f "FileGDB" C:\blah\MyExport.gdb PG:"dbname=instagram host=hostservername user=username password=password" -sql %fullquery% -nln "LayerName" -nlt POINT --config FGDB_BULK_LOAD yes
)
pause;