首页 > 解决方案 > (python) 遍历 Salesforce 表列表以提取并加载到 AWS S3

问题描述

大家早上好!

我试图让例程遍历表列表。以下代码适用于单个表“联系人”。我想遍历我的 tablelist.csv 中列出的所有表。我将下面需要在代码中动态修改的选项加粗。由于工作了两个晚上,我的大脑此时已经非常煎熬了,我已经为互联网做好了充分的准备,告诉我这是 Python 介绍的第二章,但我可以利用帮助来克服这个障碍。

import pandas as pd
import boto3
from simple_salesforce import salesforce

li = pd.read_csv('tablelist.csv', header=none)
desc = sf.**Contact**.describe()  
field_names = [field['name'] for field in desc['fields']]
soql = "SELECT {} FROM **Contact**".format(','.join(field_names))
results = sf.query_all(soql)
sf_df = pd.DataFrame(results['records']).drop(columns='attributes')
sf_df.to_csv('**contact**.csv')
s3 = boto3.client('s3')
s3.upload_file('contact.csv', 'mybucket', 'Ops/20201027/contact.csv')

标签: pythonpandasamazon-s3

解决方案


如果您可以提供 tablelist 文件的示例会有所帮助,但这里有一个刺...您真的只需要获取表列表并循环遍历它。

#assuming table is a column somewhere in the file
df_tablelist = pd.read_csv('tablelist.csv', header=none)
for Contact in df_tablelist['yourtablecolumttoiterateon'].tolist():
    desc = sf.**Contact**.describe()  
    field_names = [field['name'] for field in desc['fields']]
    soql = "SELECT {} FROM {}".format(','.join(field_names), Contact)
    results = sf.query_all(soql)
    sf_df = pd.DataFrame(results['records']).drop(columns='attributes')
    sf_df.to_csv(Contact + '.csv')
    s3 = boto3.client('s3')
    s3.upload_file(Contact + '.csv', 'mybucket', 'Ops/20201027/' + Contact + '.csv')

推荐阅读