2017-05-28 19 views
9

Mam następujący kod skopiowany z github gtfs_SQL_importer:jak rura wielokrotnego sql- i PY-skrypty

cat gtfs_tables.sql \ 
    <(python import_gtfs_to_sql.py path/to/gtfs/data/directory) \ 
    gtfs_tables_makeindexes.sql \ 
    vacuumer.sql \ 
    | psql mydbname 

próbowałem uruchomić to na oknach i zastąpił wezwanie do UNIX polecenia cat o równowartość okien type, który powinien działać podobnie jak is-there-replacement-for-cat-on-windows.

Jednak kiedy wykonać ten kod mam jakiś błąd:

the syntax for the filename, directory or filesystem is whrong.

Więc starałem się ograniczyć liczbę plików rurami tylko połączyć wezwanie do Python i wezwanie do psql:

type <(C:/python27/python path/to/py-script.py path/to/file-argument) | psql -U myUser -d myDataBase 

co daje ten sam błąd.

kiedy wykonać skrypt Pythona sam działa jednak zgodnie z oczekiwaniami:

C:/python27/python path/to/py-script.py path/to/file-argument 

Więc zakładam wyniki błędach z użyciem type aby rury wynik skryptu bezpośrednio do psql.

Czy ktoś zna poprawną składnię?

EDIT: Aby upewnić się, problem nie jest związany z pliku nie jest znaleźć użyłem ścieżki bezwzględne dla wszystkich argumentów w moim poleceniem wyjątkiem type i psql -polecenie (które są obsługiwane zarówno przez %PATH% -variable).

+1

Czy jesteś pewien, że Twoja składnia jest poprawna?Masz operatora przekierowania bezpośrednio po 'type'. Czy możesz spróbować zrobić: 'type gtfs_tables.sql <(C:/python27/python path/tp/py-script.py ścieżka/do/file-argument) | psql -U myUser -d myDataBase'? – puelo

+0

od http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true Polecenie '<' powinno odczytywać dane z mojego skryptu python-script i wysłać go do potoku (w moim przypadku do 'psql'). Jednak dodałem również pierwszy plik sql przed '<', który daje tę samą wiadomość. – HimBromBeere

+0

Co to jest wyjście tylko tej części 'type <(C:/python27/python path/to/py-script.py path/to/file-argument)'? – zenlc2000

Odpowiedz

2

Comment: So I can´t combine the sql-files and the output from my pythonscript together and pipe them to psql?

Innym podejściem, tworzyć własne cat z Python, lub dodać pierwsze trzy linijki kodu do import_gtfs_to_sql.py, na przykład:

# Usage 
python import_gtfs_to_sql.py... | python myCat.py gtfs_tables.sql | psql mydbname 

#myCat.py 
import sys 
with open(sys.argv[1]) as fh: 
    sys.stdout.write(fh.read()) 

sys.stdout.write(sys.stdin.read()) 

Comment: I allready know the error comes from type<(python...)

TYPE polecenie nie zaakceptuj stdin.
W związku z tym jedynym rozwiązaniem jest opcja 2.

Innym rozwiązaniem jest użycie skryptu w języku Python do wykonania print gtfs_tables.sql.


Question: the syntax for the filename, directory or filesystem is whrong.

  1. Sprawdzaj, z których część Powyższy błąd pochodzi.

    a) type gtfs_tables.sql 
    b) type <(python ... 
    c) type gtfs_tables.sql <(python ... 
    d) type gtfs_tables.sql | psql mydbname 
    e) type <(python ... | psql mydbname 
    
  2. Zapisz Wyprowadzenie <(python ... do pliku i spróbuj

    python ... > tmp_python_output 
    type gtfs_tables.sql tmp_python_output | psql mydbname 
    
+0

Już wiem, że błąd pochodzi z 'type <(python ...)'. Zatem twoja odpowiedź wcale nie rozwiązuje problemu. – HimBromBeere

+0

"Polecenie TYPE nie akceptuje wejścia standardowego." Więc nie mogę połączyć plików sql i danych wyjściowych z mojego pythonscripta i przesłać je do psql? Smutne, ale dzięki za podpowiedź. – HimBromBeere

+0

Wydaje się działać. dzięki. – HimBromBeere

Powiązane problemy