Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / SQLite Новый топик    Ответить
 База 3 млн. штрихкодов  [new]
Dima T
Member

Откуда:
Сообщений: 13868
Тут выложили базу штрихкодов в CSV

В аттаче небольшой скрипт, который перегоняет ее в базу sqlite и нормализует в 3 таблицы:
create table Brand (brand_id int primary key, brand text)
create table Category (cat_id int primary key, category text)
create table EAN (ean int primary key, tovar text, cat_id int references Category, brand_id int references Brand)

ПолеОписание
EAN.eanштрихкод
EAN.tovarнаименование товара
Brand.brandбрэнд
Category.categoryкатегория


Текущий размер 508 Мб:
ТаблицаЗаписей
Brand36 009
Category2 275
EAN2 922 766


Инструкция по применению ean2sqlite.cmd внутри.

Может кому пригодится по прямому назначению или просто потестить производительность sqlite.

К сообщению приложен файл (ean2sqlite.cmd - 2Kb) cкачать
20 сен 18, 10:15    [21680375]     Ответить | Цитировать Сообщить модератору
 Re: База 3 млн. штрихкодов  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 811
Dima T,

Ругается на строках где в конце есть табуляция.

C:\77777777777>ean2sqlite.cmd
Could Not Find C:\77777777777\ean.db
off
import uhtt_barcode_ref_all.csv ...
uhtt_barcode_ref_all.csv:1643688: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:1643689: expected 7 columns but found 5 - filling the rest with NULL
uhtt_barcode_ref_all.csv:1870051: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:1870052: expected 7 columns but found 5 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050294: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050295: expected 7 columns but found 5 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050311: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050312: expected 7 columns but found 5 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050339: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050340: expected 7 columns but found 5 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050342: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2050343: expected 7 columns but found 5 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2423876: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2423877: expected 7 columns but found 5 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2897445: expected 7 columns but found 3 - filling the rest with NULL
uhtt_barcode_ref_all.csv:2897446: expected 7 columns but found 5 - filling the rest with NULL
delete wrong
set NULL
create Category
rows
2275
create Brand
rows
36009
create EAN
rows
2922766
vacuum
20 сен 18, 15:52    [21680978]     Ответить | Цитировать Сообщить модератору
 Re: База 3 млн. штрихкодов  [new]
Dima T
Member

Откуда:
Сообщений: 13868
PPA
Ругается на строках где в конце есть табуляция.

Исходные данные немного кривоваты. В некоторых наименованиях есть перевод строки, который одну строку рвет на две. Хорошо что они игнорируются.
Думаю что сотня-другая пропущенных строк ничего не поменяет. Иначе из-за них надо полноценный парсер писать.
20 сен 18, 16:08    [21681005]     Ответить | Цитировать Сообщить модератору
 Re: База 3 млн. штрихкодов  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 811
Dima T,

тут уникальные индексы должны быть
echo create unique index category_category_idx ON category(category); >> create.sql
echo create unique index brand_brand_idx ON brand(brand); >> create.sql

а этот можно выкинуть
echo create index ean_tovar_idx ON ean(tovar); >> create.sql

ведь искать будут like '%бла-бла-бла%'?
и размер становится 335 Мб.
20 сен 18, 16:37    [21681096]     Ответить | Цитировать Сообщить модератору
 Re: База 3 млн. штрихкодов  [new]
Dima T
Member

Откуда:
Сообщений: 13868
PPA
Dima T,

тут уникальные индексы должны быть
echo create unique index category_category_idx ON category(category); >> create.sql
echo create unique index brand_brand_idx ON brand(brand); >> create.sql

Для полноценной БД - должны, а тут дефакто readonly БД, поэтому без разницы.

PPA
а этот можно выкинуть
echo create index ean_tovar_idx ON ean(tovar); >> create.sql

ведь искать будут like '%бла-бла-бла%'?
и размер становится 335 Мб.

это пофиг, не потребуется - только место на диске будет занимать. 180 мб на диске это незначительная мелочь.
20 сен 18, 19:13    [21681312]     Ответить | Цитировать Сообщить модератору
Все форумы / SQLite Ответить