PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Lesen Sie CSV/Excel-Dateien aus der SFTP-Datei, nehmen Sie einige Änderungen in diesen Dateien mit Pandas vor und speichern Sie sie zurück

Sie haben den Download-Teil abgeschlossen.

Für den Upload-Teil siehe How to Transfer Pandas DataFrame to .csv on SFTP using Paramiko Library in Python? – Während es für Paramiko ist, pysftp Connection.open Methode verhält sich identisch zu Paramiko SFTPClient.open , also ist der Code derselbe.

Vollständiger Code kann wie folgt aussehen:

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())

Das obige aktualisiert dieselbe Datei. Wenn Sie in eine andere Datei hochladen möchten, verwenden Sie diese:

# 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)

Für bufsize , siehe:
Das Schreiben in eine Datei auf einem SFTP-Server, die mit der pysftp-Methode "open" geöffnet wurde, ist langsam

Obligatorische Warnung:Setzen Sie nicht cnopts.hostkeys = None , es sei denn, Sie kümmern sich nicht um Sicherheit. Die richtige Lösung finden Sie unter Hostschlüssel mit pysftp verifizieren .