Парсити json (у вигляді dictionary) в Python і інсертити в базу в циклі стрічка за стрічкою виходить ок. Але якщо в json-і десятки тисяч записів, то в циклі виходить довго. Як обійтися без циклу?... 
str1 = "{'odata.metadata': 'https://example.com/entity1', 'value': [{'ContactId': '30946834956845968', 'ContactName': 'name1', 'ContactTitle': 'title1', 'ContactEMail': 'user@example.com', 'ContactCompanyOrProperty': 'company1, LLC', 'ContactLastDateChanged': '2020-09-08T19:30:27.223', 'AssociatedEntity': '934859384595348', 'CorporateEntityId': '9458694568', 'RowVersion': '313918713'}, {'ContactId': '934586945568', 'ContactName': 'name2', 'ContactTitle': 'title2', 'ContactEMail': 'user2@example.com', 'ContactCompanyOrProperty': 'company2, LLC', 'ContactLastDateChanged': '2020-09-08T18:30:27.223', 'AssociatedEntity': '93458694568', 'CorporateEntityId': '3046984968', 'RowVersion': '313918713'}]}"
var_raw_dict = eval(str1)
for x in var_raw_dict['value']:
    #print(x['ContactId'])
    print("Insert into table1 Select '" + str(x.get("ContactId")).replace("None","null") + "', '" + str(x.get("ContactName")).replace("None","null").replace("'","`") + "', '" + str(x.get("ContactEMail")).replace("None","null") + "', '" + str(x.get("ContactTitle")).replace("None","null") + "', '" + str(x.get("ContactCompanyOrProperty")).replace("None","null") + "', '" + str(x.get("ContactLastDateChanged")).replace("None","null") + "', '" + str(x.get("AssociatedEntity")).replace("None","null") + "', '" + str(x.get("CorporateEntityId")).replace("None","null") + "', '" + str(x.get("RowVersion")).replace("None","null") + "'")
Insert into table1 Select '30946834956845968', 'name1', 'user@example.com', 'title1', 'company1, LLC', '2020-09-08T19:30:27.223', '934859384595348', '9458694568', '313918713'
Insert into table1 Select '934586945568', 'name2', 'user2@example.com', 'title2', 'company2, LLC', '2020-09-08T18:30:27.223', '93458694568', '3046984968', '313918713'
Upd: пробую ідею формувати великий інсерт і ранити його шматками при досягненні 500 записів.
якось так: 
str1 = "{'odata.metadata': 'https://example.com/entity1', 'value': [{'ContactId': '30946834956845968', 'ContactName': 'name1', 'ContactTitle': 'title1', 'ContactEMail': 'user@example.com', 'ContactCompanyOrProperty': 'company1, LLC', 'ContactLastDateChanged': '2020-09-08T19:30:27.223', 'AssociatedEntity': '934859384595348', 'CorporateEntityId': '9458694568', 'RowVersion': '313918713'}, {'ContactId': '934586945568', 'ContactName': 'name2', 'ContactTitle': 'title2', 'ContactEMail': 'user2@example.com', 'ContactCompanyOrProperty': 'company2, LLC', 'ContactLastDateChanged': '2020-09-08T18:30:27.223', 'AssociatedEntity': '93458694568', 'CorporateEntityId': '3046984968', 'RowVersion': '313918713'}, {'ContactId': '30946834956845968', 'ContactName': 'name3', 'ContactTitle': 'title1', 'ContactEMail': 'user@example.com', 'ContactCompanyOrProperty': 'company1, LLC', 'ContactLastDateChanged': '2020-09-08T19:30:27.223', 'AssociatedEntity': '934859384595348', 'CorporateEntityId': '9458694568', 'RowVersion': '313918713'}, {'ContactId': '934586945568', 'ContactName': 'name4', 'ContactTitle': 'title2', 'ContactEMail': 'user2@example.com', 'ContactCompanyOrProperty': 'company2, LLC', 'ContactLastDateChanged': '2020-09-08T18:30:27.223', 'AssociatedEntity': '93458694568', 'CorporateEntityId': '3046984968', 'RowVersion': '313918713'}]}"
var_raw_dict = eval(str1)
j = 0
i = 0
chunk = 3
var_select = ""
var_value_length = len(var_raw_dict['value'])
for x in var_raw_dict['value']:
    #print(x['ContactId'])
    i = i + 1
    j = j + 1
    var_select = var_select + " Select '" + str(x.get("ContactId")).replace("None","null") + "', '" + str(x.get("ContactName")).replace("None","null").replace("'","`") + "', '" + str(x.get("ContactEMail")).replace("None","null") + "', '" + str(x.get("ContactTitle")).replace("None","null") + "', '" + str(x.get("ContactCompanyOrProperty")).replace("None","null") + "', '" + str(x.get("ContactLastDateChanged")).replace("None","null") + "', '" + str(x.get("AssociatedEntity")).replace("None","null") + "', '" + str(x.get("CorporateEntityId")).replace("None","null") + "', '" + str(x.get("RowVersion")).replace("None","null") + "'"
    if i == chunk:
        var_select = "Insert Into table1 " + var_select
        print(var_select)
        i = 0
        var_select = ""
    else:
        if j == var_value_length:
            var_select = "Insert Into table1 " + var_select
            print(var_select)
        else:
            var_select = var_select + " union all "
Insert Into table1  Select '30946834956845968', 'name1', 'user@example.com', 'title1', 'company1, LLC', '2020-09-08T19:30:27.223', '934859384595348', '9458694568', '313918713' union all  Select '934586945568', 'name2', 'user2@example.com', 'title2', 'company2, LLC', '2020-09-08T18:30:27.223', '93458694568', '3046984968', '313918713' union all  Select '30946834956845968', 'name3', 'user@example.com', 'title1', 'company1, LLC', '2020-09-08T19:30:27.223', '934859384595348', '9458694568', '313918713'
Insert Into table1  Select '934586945568', 'name4', 'user2@example.com', 'title2', 'company2, LLC', '2020-09-08T18:30:27.223', '93458694568', '3046984968', '313918713'
(в джейсоні чотири записи: в налаштуваннях один шматок це три записи, отже вийшли шматки по три записи і в кінці залишок один запис)