PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Lisez les fichiers CSV/Excel à partir du fichier SFTP, apportez des modifications à ces fichiers à l'aide de Pandas et enregistrez-les

Vous avez terminé la partie téléchargement.

Pour la partie téléchargement, voir How to Transfer Pandas DataFrame to .csv on SFTP using Paramiko Library in Python ? – Tant que c'est pour Paramiko, pysftp Connection.open méthode se comporte de la même manière que Paramiko SFTPClient.open , donc le code est le même.

Le code complet peut ressembler à :

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

Ce qui précède met à jour le même fichier. Si vous souhaitez télécharger vers un autre fichier, utilisez ceci :

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

Aux fins de bufsize , voir :
L'écriture dans un fichier sur le serveur SFTP ouvert à l'aide de la méthode pysftp "open" est lente

Avertissement obligatoire :Ne définissez pas cnopts.hostkeys = None , sauf si vous ne vous souciez pas de la sécurité. Pour la bonne solution, voir Vérifier la clé de l'hôte avec pysftp .