Перейти до змісту

Пдкажіть реалізацію хешування вмісту файлу порядково


Quiet

Рекомендовані повідомлення

До мене від постачальників приходить прайс у вигляді csv-файлу. Зміст файлу такий (зміст придуманий, але точно відображає суть)

Бренд1 Труси білий XL;10.00
Бренд1 Труси білий XXL;12.00
Бренд2 Труси жовтий М;8.00
Бренд5 Труси червоний L;9.00

Тобто в першій колонці змішані в кучу бренди, тип товару, модель, колір і розмір.через пробіл. В другій колонці ціна.

 

Виникла необхідність завантажувати цей прайс на пром.юа. На промі звісно ж є свої вимоги до формату файлу. І одна з основних вимог це те, щоб в кожної товарної позиції був артикульний (інвентарний) номер, по якому цю товарну позицію можна буде однозначно ідентифікувати при наступних завантаженнях прайсу, довжина цього номера максимум 15 символів (це обмеження).

 

Значить треба якось до кожної позиції згенерувати цей номер. Просто пронумерувати не варіант, тому що, якщо позиції 2 не буде на складі, то  в прайс її не включать і решта рядків зміститься на рядок вверх.

 

Я бачу вихід із ціє ситуації, як хешування кожної позиції в першій колонці за алгоритмом CRC32 (результат вміщається в 15 символьне обмеження прому). Таким чином буде отриманий унікальний код який залежить від змісту. Це діло треба автоматизувати тому, що в прайсі більше 50 тис. позицій.

 

Я застряг на реалізації цього алгоритму і прошу допомоги у вигляді  ідеї, поради, готового рішення.

 

Мене влаштували би наступні варіанти реалізації:

1. Формула в будь якому табличному редакторі (MS Office, Libre office, Open office і т.д.), з допомогою якої можна порахувати хеш певної комірки.

2. Програма в яку можна завантажити список а на виході отримати хеш кожного рядка.

3. Скрипт для ОС linux який би робив те ж саме, що і програма з пункту 2.

4. Ваші варіанти.

 

Буду вдячний за будь-які ідеї, бо мені здається, що в мене вже замилилось око, і я не бачу чогось під носом.

 

 

Посилання на коментар
Поділитись на інші сайти

Якщо правильно зрозумів, то можна приблизно так:

var csv = `Бренд1, Труси, білий, XL, 10.0
	Бренд1, Труси, чорний, XXL, 10.00`,
	result,
	array;
array = csv.split('\n');
for (var i = ; i < array.length; i++) {
	var row = array[i];
  	var key = i;
 	row = key + ', ' + row;
 	array[i] = row;
}
result = array.join('\n');
console.log(result);

key (артикульний номер) можна легко підміняти будь-яким хешем. А далі, залежно від потреб, писати функціонал.

Посилання на коментар
Поділитись на інші сайти

функція для екселя

https://gist.github.com/anonymous/573a875dac68a4af560d

cutoff постав 15

Посилання на коментар
Поділитись на інші сайти

5 годин тому, Quiet сказано:

4. Ваші варіанти.

 

Можна зробити всі попередні 3 пункти 1 програмою на php.

Посилання на коментар
Поділитись на інші сайти

  • 2 тижня потому...

Оо а якщо виникне необхідність розшифровувати назад?)))     Наприклад автоматизація обробки замовлень ... 

 

Чим пагано зібрати з тієї ж назви перши 15 символів без пробілів? Так багато позицій де ці параметри співпадають? 

Чи це має бути однозначно цифрове представлення коду? Якщо все таки  буде рішення генерувати якийсь хеш там чи мд5  рекомендую вести перелік приведених хешів у відповідності до назв. 

 

У культурних системах питання вирішується банальною таблицею привязок кодів\назв\шк. 

 

Якщо для екселя варіанти рішення тут як на мене: http://www.excelworld.ru/forum/2-917-1

Посилання на коментар
Поділитись на інші сайти

Заархівовано

Ця тема знаходиться в архіві та закрита для подальших відповідей.



×
×
  • Створити...