Strona główna » Blog » SQL

Tag: SQL

Słowniki odmian słów polskich – załadowanie do bazy MySQL

Aby załadować słowniki SGJP i/lub Polimorf do bazy MySQL należy pobrać bazy słownikowe w postaci plików “*.tab” (wewnętrznie jest to format TSV) i wydać następujące polecenia:

CREATE TABLE `words` (
	`inflected` VARCHAR(38) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`id` VARCHAR(35) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`description` TINYTEXT NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional2` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	INDEX `inflected` (`inflected`),
	INDEX `id` (`id`)
)
COLLATE='utf8_general_mysql500_ci'
ENGINE=InnoDB
;

CREATE TABLE `words_polimorf` (
	`inflected` VARCHAR(45) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`id` VARCHAR(40) NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`description` TINYTEXT NOT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	`additional2` TINYTEXT NULL COLLATE 'utf8_general_mysql500_ci',
	INDEX `inflected` (`inflected`),
	INDEX `id` (`id`)
)
COLLATE='utf8_general_mysql500_ci'
ENGINE=InnoDB
;

LOAD DATA LOW_PRIORITY LOCAL INFILE 'F:\\sgjp-20180923.tab' REPLACE INTO TABLE `words` FIELDS TERMINATED BY '	' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 29 LINES (`inflected`, `id`, `description`, `additional`, `additional2`);
/* 7 224 173 rows imported in 91,594 seconds. */

LOAD DATA LOW_PRIORITY LOCAL INFILE 'F:\\polimorf-20180923.tab' REPLACE INTO TABLE `words_polimorf` FIELDS TERMINATED BY '	' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\n' IGNORE 32 LINES (`inflected`, `id`, `description`, `additional`, `additional2`);
/* 7 374 866 rows imported in 270,469 seconds. */

Można to też sobie wyklikać w HeidiSQL. Parametry importowania plików TAB są takie:

Dekodowanie zawartości kolumny “description” można znaleźć w tej publikacji, rozdział 5.

Liczby pierwsze a dziedziczenie w drzewie w bazach relacyjnych

Wstępem niech będzie prosty praktyczny przykład, który zobrazuje pewien problem. W relacyjnej bazie danych mamy stworzyć obsługę struktury drzewa, czyli powiązanej struktury węzłów, z których każdy ma maksymalnie jednego rodzica (korzeń drzewa nie ma rodzica w ogóle). Liście tego drzewa mają “dziedziczyć” po swoich rodzicach jakieś wartości – nazwijmy je atrybutami. Interesuje nas pozyskiwanie pełnej listy atrybutów dla danego węzła.

Czytaj więcej…