2014-10-06 2 views
0

я пытаюсь читать файлы и загружать их все CSV-файлы, и когда-то сделали переместить файлы в другое место:перекручивание через файлы для PostgreSQL дают ошибки в окнах

cd E:\data\ 
for /f %%a in (’dir /b filename*.CSV) do (
    psql -U postgre -W password -c "COPY INTO LA from %%a" zipcodes 
    mv %%a E:\data\bc\ 
) 

, но это дает мне следующую ошибку :

E:\data>for /F %a in (ΓÇÖdir /b filename*.CSV) do (
psql -U postgre -W password-c "COPY INTO LA from %a" zipcodes 
mv %a E:\data\bc\ 
) 
The system cannot find the file ΓÇÖdir. 

спасибо за помощь

+0

Вашего '«'является„довольно“цитата, используйте обычные один ('»') –

+0

я до сих пор получить файл не найдена ошибка (mv% a E: \ loadpg \ data \ bc \ ) Система не может найти файл 'dir/b filename * .CSV.) – hi4ppl

+0

Вы имеете в виду 'move' вместо' mv' (что делает не существует на окнах по умолчанию) –

ответ

1
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    set "psql=c:\wherever\psqlIs\psql.exe" 

    pushd "e:\data" && (
     for %%a in ("filename*.CSV") do (
      "%psql%" -U postgre -W password -c "COPY INTO LA from %%~a" zipcodes 
      move "%%~a" "E:\data\bc\" 
     ) 
     popd 
    ) 

for /f предназначено для файла/струнного р rocessing. Для итерации по набору файлов используйте простой for

В любом случае проблема в коде - открывающая одинарная кавычка (как указал Алекс К), отсутствующая закрывающая цитата и не существующая команда mv в окнах, которые должны быть move

отредактировал похоже, что есть проблемы с загрузкой файла. PSQL copy команды указует, что лучше использовать полные имена (с обратными косыми в два раз), так

@echo off 
    setlocal enableextensions enabledelayedexpansion 

    set "psql=c:\wherever\psqlIs\psql.exe" 

    pushd "e:\data" && (
     for %%a in ("filename*.CSV") do (
      set "file=%%~fa" 
      "%psql%" -U postgre -W password -c "COPY INTO LA from E'!file:\=\\!'" zipcodes 
      move "%%~a" "E:\data\bc\" 
     ) 
     popd 
    ) 
+0

спасибо, но ваш код только меняет каталог, а затем распечатывает остальную часть кода на экране, он не зацикливает файлы и не запускает psql для их загрузки. – hi4ppl

+0

@ hi4ppl, ответ обновлен, попробуйте сейчас. –

+0

@ hi4ppl, очевидно, если не являются 'filenames * .csv', они не будут найдены, и если' psql' не будет доступен в текущей папке или в пути, он не будет называться –

Смежные вопросы