PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Baca file CSV/Excel dari file SFTP, buat beberapa perubahan pada file tersebut menggunakan Pandas, dan simpan kembali

Anda telah menyelesaikan bagian pengunduhan.

Untuk bagian pengunggahan, lihat Bagaimana Cara Mentransfer Pandas DataFrame ke .csv di SFTP menggunakan Perpustakaan Paramiko dengan Python? – Sementara untuk Paramiko, pysftp Connection.open metode berperilaku identik dengan Paramiko SFTPClient.open , jadi kodenya sama.

Kode lengkapnya bisa seperti:

with sftp.open("/remote/path/data.csv", "r+", bufsize=32768) as f:
    # Download CSV contents from SFTP to memory
    df = pd.read_csv(f)

    # Modify as you need (just an example)
    df.at[0, 'Name'] = 'changed'

    # Upload the in-memory data back to SFTP
    f.seek(0)
    df.to_csv(f, index=False)
    # Truncate the remote file in case the new version of the contents is smaller
    f.truncate(f.tell())

Di atas memperbarui file yang sama. Jika Anda ingin mengunggah ke file lain, gunakan ini:

# Download CSV contents from SFTP to memory
with sftp.open("/remote/path/source.csv", "r") as f:
    df = pd.read_csv(f)

# Modify as you need (just an example)
df.at[0, 'Name'] = 'changed'

# Upload the in-memory data back to SFTP
with sftp.open("/remote/path/target.csv", "w", bufsize=32768) as f:
    df.to_csv(f, index=False)

Untuk tujuan bufsize , lihat:
Menulis ke file di server SFTP yang dibuka menggunakan metode pysftp "open" lambat

Peringatan wajib:Jangan setel cnopts.hostkeys = None , kecuali jika Anda tidak peduli dengan keamanan. Untuk solusi yang benar, lihat Verifikasi kunci host dengan pysftp .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada jalan pintas untuk SELECT * FROM?

  2. PostgreSQL:Cara mendapatkan semua poin dalam radius tertentu

  3. Cara Mengimpor File XML Besar (~10GB) ke dalam PostgreSQL

  4. string vs teks menggunakan Rails 3.2.* dan Postgres - haruskah saya selalu menggunakan teks

  5. Masalah dengan rentang waktu tak terbatas di Rails