2017-05-28 15 views
9

aşağıdaki kod github gtfs_SQL_importer kopyalanmış adres:nasıl boru birden SQL- ve py-komut

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

ben pencerelerde bu çalıştırmayı denedi ve pencereler eşdeğer tarafından UNIX komutu cat çağrısını yerini is-there-replacement-for-cat-on-windows ile benzer şekilde çalışması gereken type.

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

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

Yani sadece piton çağrısı ve psql çağrısını birleştirmek borulu dosya sayısını sınırlamak için çalıştı: Ben kodu çalıştırdığınızda

Ancak bazı hatalar elde Aynı hataya neden olan

. Ben yalnız python-komut dosyası çalıştırdığınızda

Ancak beklendiği gibi çalışır:

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

yüzden psql doğrudan boruya amacıyla senaryonun sonucu type kullanarak hata sonuçlarını varsayalım.

Doğru sözdizimini bilen biri var mı?

DÜZENLEME: Sorunu sağlamak için bir dosyaya ilişkili değildir değil ben (her iki -Değişken %PATH% aracılığıyla işlenir) type ve psql -command hariç emrime içindeki tüm argümanlar için mutlak yollarını kullanılan yeralmaktadır.

+1

Sözdiziminizin doğruluğundan emin misiniz?'Type' sonrası doğrudan bir yönlendirme operatörünüz var. Yapmayı dener misiniz: türünü gtfs_tables.sql <(C:/python27/python yolu/tp/py-script.py yolu/için/dosya argümanı) | psql -U myUser -d myDataBase'? Http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true adresindeki – puelo

+0

, '<-command python-script'imdeki verileri okumalıdır ve boruya gönder (benim durumumda psql'ye). Ancak ilk sql dosyasını da ekledim. – HimBromBeere

+0

Sadece bu parçanın çıkışı nedir? Tür <(C:/python27/python yolu// py-script.py path/to/file-argument) '? – zenlc2000

cevap

2

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

başka bir yaklaşım, Python, ile kendi cat oluşturmak veya örneğin import_gtfs_to_sql.py için kodunun ilk üç satırı ekleyin:

# 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 komut yapar değil stdin kabul et.
Tek çözüm seçeneğiniz Seçenek 2'dir.

Başka bir yaklaşım, Python Komut dosyanızı print gtfs_tables.sql yapmak için kullanmaktır.

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


  1. yukarıdaki hata geliyor hangi bölümünün dan öğrenin.

    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. Dosyaya <(python ... Üremini kaydedin ve

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

Zaten biliyorum ki hata türünden geliyor (python ...) '. Böylece cevabınız problemi çözmez. – HimBromBeere

+0

"TYPE komutu stdin'i kabul etmiyor." Bu yüzden sql dosyalarını ve çıktıları pythonscript'imle birleştirip psql'ye aktaramam? Üzgünüm, ama ipucu için teşekkürler. – HimBromBeere

+0

Çalışıyor görünüyor. Teşekkürler. – HimBromBeere

4

cygwin yükleyin ve Windows üzerinde Unix kedi kullanmaya çalışın.