CSV bulk import dry run #3605

Closed
opened 2025-12-29 18:30:06 +01:00 by adam · 2 comments
Owner

Originally created by @hansswanson on GitHub (Apr 24, 2020).

Environment

  • Python version: 3.6.4
  • NetBox version: 2.8.1

Proposed Functionality

Display all the errors in the bulk import csv data instead of just the first one by adding the ability to do a dry run on the import data that checks all the submissions for errors and displays them to the user.

Use Case

This will aid in the import of large datasets of devices because the errors will be given to you all at once instead of the current fix and check that you have to do if you are missing device types or racks in your database.

Database Changes

External Dependencies

Originally created by @hansswanson on GitHub (Apr 24, 2020). <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.6.4 <!-- Example: 3.6.4--> * NetBox version: 2.8.1 <!-- 2.8.1 --> <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality Display all the errors in the bulk import csv data instead of just the first one by adding the ability to do a dry run on the import data that checks all the submissions for errors and displays them to the user. <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case This will aid in the import of large datasets of devices because the errors will be given to you all at once instead of the current fix and check that you have to do if you are missing device types or racks in your database. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies
adam added the pending closure label 2025-12-29 18:30:06 +01:00
adam closed this issue 2025-12-29 18:30:06 +01:00
Author
Owner

@jeremystretch commented on GitHub (Apr 27, 2020):

CSV import does not provide a "dry run" function because it is assumed that if you are submitting an import form, you intend to import the objects as defined. The import function aborts upon the first error for several reasons:

  1. The validation of an object may be predicated upon the successful validation of an object imported before it (e.g. to enforce uniqueness of a field).
  2. Validation errors are frequently consistent across all rows. For instance, if you have typoed the name of a site, the same error likely exists in each row, so it would be redundant to return an error for each row.
  3. Returning a discrete error message for each invalid row can be quickly become overwhelming. For example, when importing a hundred objects, it is unlikely that a user is going to read a hundred error messages before modifying their data and making another attempt.
@jeremystretch commented on GitHub (Apr 27, 2020): CSV import does not provide a "dry run" function because it is assumed that if you are submitting an import form, you intend to import the objects as defined. The import function aborts upon the first error for several reasons: 1. The validation of an object may be predicated upon the successful validation of an object imported before it (e.g. to enforce uniqueness of a field). 2. Validation errors are frequently consistent across all rows. For instance, if you have typoed the name of a site, the same error likely exists in each row, so it would be redundant to return an error for each row. 3. Returning a discrete error message for each invalid row can be quickly become overwhelming. For example, when importing a hundred objects, it is unlikely that a user is going to read a hundred error messages before modifying their data and making another attempt.
Author
Owner

@stale[bot] commented on GitHub (May 8, 2020):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.

@stale[bot] commented on GitHub (May 8, 2020): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3605