general approach for insert script
This commit is contained in:
56
utils.py
Normal file
56
utils.py
Normal file
@ -0,0 +1,56 @@
|
||||
import os
|
||||
from sys import path
|
||||
path.append('../..')
|
||||
from sf_auth import get_sf_connection
|
||||
|
||||
def bulk_insert_records(context, object_name, csv_file):
|
||||
"""
|
||||
Generic bulk insert function for Salesforce records
|
||||
|
||||
Args:
|
||||
context (str): Salesforce org context (e.g., 'qa2', 'prod')
|
||||
object_name (str): Salesforce object API name
|
||||
csv_file (str): Path to the CSV file containing records
|
||||
"""
|
||||
try:
|
||||
sf = get_sf_connection(context)
|
||||
print(f'Starting bulk insert of {object_name} records from {csv_file}...')
|
||||
|
||||
# Get the bulk API object dynamically
|
||||
bulk_api = getattr(sf.bulk2, object_name)
|
||||
|
||||
results = bulk_api.insert(
|
||||
csv_file,
|
||||
batch_size=10000,
|
||||
concurrency=5
|
||||
)
|
||||
|
||||
success_count = results[0]['numberRecordsProcessed'] - results[0]['numberRecordsFailed']
|
||||
total_count = results[0]['numberRecordsTotal']
|
||||
failed_count = results[0]['numberRecordsFailed']
|
||||
|
||||
print(f'\nInsertion complete:')
|
||||
print(f'Job Id: {results[0]["job_id"]}')
|
||||
print(f'Total records: {total_count}')
|
||||
print(f'Successful: {success_count}')
|
||||
print(f'Failed: {failed_count}')
|
||||
|
||||
if failed_count > 0:
|
||||
for result in results:
|
||||
job_id = result['job_id']
|
||||
failed_records_file = f'failed_records.csv'
|
||||
bulk_api.get_failed_records(job_id, file=failed_records_file)
|
||||
print(f'Failed records for job {job_id} saved to {failed_records_file}')
|
||||
|
||||
if success_count > 0:
|
||||
for result in results:
|
||||
job_id = result['job_id']
|
||||
successful_records_file = f'successful_records.csv'
|
||||
bulk_api.get_successful_records(job_id, file=successful_records_file)
|
||||
print(f'Successful records for job {job_id} saved to {successful_records_file}')
|
||||
|
||||
return results
|
||||
|
||||
except Exception as e:
|
||||
print(f'Error: {str(e)}')
|
||||
raise
|
Reference in New Issue
Block a user