Data Import
The data importer is a great tool for importing data from external sources. It can be used for the initial setup of a project or continuous synchronization with a third-party application.
Currently, the data importer supports products, prices, price groups, and currencies.
What the Data Importer Does
The data importer inserts data that have not been previously imported into the Ucommerce database. If an entity already exists, it updates the existing entity. The only exception is the currency entity; if a currency with the same ISO code already exists in the database, that entity will not be updated.
Getting Started
To use the data importer, install the Ucommerce.DataImport.Core
NuGet package:
After installing the package, implement the following interfaces to fetch data from the external source(s):
ICurrencyFetcher
IPriceGroupFetcher
IPriceFetcher
IProductFetcher
Each interface has a method to fetch the data. The method takes batchNumber
and batchSize
as parameters. Use these to fetch a specific amount of data on each call. For example, if batchNumber
is 2 and batchSize
is 100, the fetcher should skip the first 200 elements and take the next 100:
Below is an example of how CurrencyFetcher
could be implemented by reading from a CSV file:
Registering the Fetcher(s)
The fetcher(s) need to be registered in the service collection. It's recommended to create a helper method to register all the fetchers for reusability:
Setting up the Data Importer
Add the necessary settings to the appsettings.json file (or similar) under the Ucommerce section to set up the data importer. The two key settings are BatchSize
(optional - default is 1000), which determines the size of data chunks to be fetched, and ConnectionString
(required), which should point to the Ucommerce database the data will be imported into. Here is an example of the app settings for the data importer:
Running the Data Importer
To run the data importer, inject it where you want to execute it and call the Run
method.
Here is an example of an API Controller with an endpoint for executing the data importer on demand:
The importer should run on a regular schedule, such as a background service within the website, or even better, as a separate console application outside of the website. Especially if the importer need access to the external source of truth.
Community contributed implementations
If you have implemented a data importer for Ucommerce that you would like to share with the community please let us know.
UcommerceCsvImporter - A flexible importer for CSV files, just tell it where to look for the files, which column is which, and optionally a few other things, and it will take care of the rest.
Last updated