По всей видимости, файлы приходят из разных источников?
В таком случае разумно написать класс Товар, который не делает почти ничего, только описывает основные поля и имеет методы записать_в_базу() и, возможно, проверить_наличие_в_базе().
Далее на каждый источник файлов пишется свой парсер, который разбирает файл на массив таких объектов и у каждого по очереди вызывает сначала метод проверить_наличие_в_базе(), и при отрицательном ответе вызывает записать_в_базу().
Если нужно не только заносить новые объекты, но и обновлять старые, то логика второго пункта чуть усложняется, но не критично.