Skip to main content

SharePoint Rest Call Bulk Insert Data

You can create Max of 500 records in post request call if you include more than records better to call multiple requests this way you can achieve




<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.1.js"></script>

<h1>Employee Information</h1>
<br />   
<input type="button" id="btnFetchEmployees" value="Create and Fetch Employees" />
<br />
 <table cellpadding="2" cellspacing="2">
    <thead id="tHead">
    </thead>
    <tbody id="tBody">
    </tbody>
</table>

<script type="text/javascript">


(function () {
    jQuery(document).ready(function () {
       jQuery("#btnFetchEmployees").click(function () {
            addEmployees();
        });
    });
})();
function addEmployees() {
    var employeesAsJson = undefined;
    employeesAsJson = [
            {
                __metadata: {
                    type: 'SP.Data.EmployeeInfoListItem'
                },
                Title: 'Geetanjali',
                LastName: 'Arora',
                Technology: 'SharePoint'
            },
            {
                __metadata: {
                    type: 'SP.Data.EmployeeInfoListItem'
                },
                Title: 'Geetika',
                LastName: 'Arora',
                Technology: 'Graphics'
            },
            {
                __metadata: {
                    type: 'SP.Data.EmployeeInfoListItem'
                },
                Title: 'Ashish',
                LastName: 'Brajesh',
                Technology: 'Oracle'
            }
    ];
var ResultJSon =employeesAsJson;
for(var i=1;i<=500;i++)
{
var dynanmicRecord = { '__metadata': { 'type': 'SP.Data.EmployeeInfoListItem' },'Title': 'Record "+i+"','LastName': 'Brajesh', 'Technology': 'Oracle' } ;
dynanmicRecord.Title ='Record'+i;
 ResultJSon .push(dynanmicRecord);
console.log(ResultJSon );
}
alert(ResultJSon.length);
    addEmployeeInfoBatchRequest(ResultJSon );
}
function generateUUID() {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
    });
    return uuid;
};
function addEmployeeInfoBatchRequest(employeesAsJson) {
    // generate a batch boundary
    var batchGuid = generateUUID();
    // creating the body
    var batchContents = new Array();
    var changeSetId = generateUUID();
    // get current host
    var temp = document.createElement('a');
    temp.href = _spPageContextInfo.webAbsoluteUrl;
    var host = temp.hostname;
    // iterate through each employee
    for (var employeeIndex = 0; employeeIndex < employeesAsJson.length; employeeIndex++) {
        var employee = employeesAsJson[employeeIndex];
        // create the request endpoint
        var endpoint = _spPageContextInfo.webAbsoluteUrl
                       + '/_api/web/lists/getbytitle(\'EmployeeInfo\')'
                       + '/items';
        // create the changeset
        batchContents.push('--changeset_' + changeSetId);
        batchContents.push('Content-Type: application/http');
        batchContents.push('Content-Transfer-Encoding: binary');
        batchContents.push('');
        batchContents.push('POST ' + endpoint + ' HTTP/1.1');
        batchContents.push('Content-Type: application/json;odata=verbose');
        batchContents.push('');
        batchContents.push(JSON.stringify(employee));
        batchContents.push('');
    }
    // END changeset to create data
    batchContents.push('--changeset_' + changeSetId + '--');
    // batch body
    var batchBody = batchContents.join('\r\n');
    batchContents = new Array();
    // create batch for creating items
    batchContents.push('--batch_' + batchGuid);
    batchContents.push('Content-Type: multipart/mixed; boundary="changeset_' + changeSetId + '"');
    batchContents.push('Content-Length: ' + batchBody.length);
    batchContents.push('Content-Transfer-Encoding: binary');
    batchContents.push('');
    batchContents.push(batchBody);
    batchContents.push('');
    // create request in batch to get all items after all are created
    endpoint = _spPageContextInfo.webAbsoluteUrl
                  + '/_api/web/lists/getbytitle(\'EmployeeInfo\')'
                  + '/items?$orderby=Title';
    batchContents.push('--batch_' + batchGuid);
    batchContents.push('Content-Type: application/http');
    batchContents.push('Content-Transfer-Encoding: binary');
    batchContents.push('');
    batchContents.push('GET ' + endpoint + ' HTTP/1.1');
    batchContents.push('Accept: application/json;odata=verbose');
    batchContents.push('');
    batchContents.push('--batch_' + batchGuid + '--');
    batchBody = batchContents.join('\r\n');
    // create the request endpoint
    var endpoint = _spPageContextInfo.webAbsoluteUrl + '/_api/$batch';
       var batchRequestHeader = {
        'X-RequestDigest': jQuery("#__REQUESTDIGEST").val(),
        'Content-Type': 'multipart/mixed; boundary="batch_' + batchGuid + '"'
    };
    // create request
    jQuery.ajax({
        url: endpoint,
        type: 'POST',
        headers: batchRequestHeader,
        data: batchBody,
        success: function (response) {
            var responseInLines = response.split('\n');
        $("#tHead").append("<tr><th>First Name</th><th>Last Name</th><th>Technology</th></tr>");
            for (var currentLine = 0; currentLine < responseInLines.length; currentLine++) {
                try {
                    var tryParseJson = JSON.parse(responseInLines[currentLine]);
                    $.each(tryParseJson.d.results, function (index, item) {
                        $("#tBody").append("<tr><td>" + item.Title + "</td><td>" + item.LastName + "</td><td>" + item.Technology + "</td></tr>");
                    });
                } catch (e) {
                    
                }
            }
        },
        fail: function (error) {
             
        }
    });
}
</script>

Comments

Popular posts from this blog

Site Logo Not Changing on Web Part Pages

I tested and reproduced your issue in my local machine. Since the Web Part Pages would override the content in PlaceHolderPageTitleInTitleArea place holder, the site logo would not change automatically. So would you please try remove or comment the following control TitleBarWebPart: See the similar scenario and solution: http://emanonsolutions.blogspot.com/2010/02/left-navigation-webpart-pages.html Hope this can help.

Create a Custom Site Definition with Additional Content in SharePoint 2010 Using Visual Studio 2010

·          Web Templates ·          Site Definitions and Configurations ·          Deciding Between Custom Web Templates and Custom Site Definitions ·          Understanding Onet.xml Files ·          How to: Create a Custom Web Template ·          Overview of Creating Custom Site Definitions Site Template Configurator utility http://stefan-stanev-sharepoint-blog.blogspot.com/search/label/SharePoint%202010 Create a Custom Site Definition with Additional Content in SharePoint 2010 Using Visual Studio 2010 http://community.bamboosolutions.com/blogs/sharepoint-2010/archive/2010/11/11/sharepoint-2010-cookbook-how-to-create-a-custom-site-definition-with-additional-content-in-sharepoint-2010-using-visual-studio-2010.aspx http://blogs.msdn.com/b/allenwang/...

SPFx Fantastic 40 Web Parts

SPFx Fantastic 40 Web Parts Ref Link :  https://github.com/OlivierCC/spfx-40-fantastics Menu & Carousels & News Management Overview Web Part Description News Carousel Insert a classical, responsive, cool & touch ready News Carousel. With this web part, you can add easily news focus in your SharePoint site. The users can easily navigate in news items, with buttons or with touch. Tiles Menu This Web Part allows you to very easily create a menu in form of tiles that is responsive and adapted for mobile. You can directly manage the items on your menu, with a title, an image and manage Visual rendering options. 3D Carousel Insert a 3D Carousel in your SharePoint pages. With this Web Part, you can manage your menu items and create automatically a 3D carousel. Coverflow Generates a Coverflow Apple like menu in your pages. Manage your menu items with title and picture and create a cool coverflow menu. News Slider Insert a News Slider Tiles control to your pages....