Я пытаюсь извлечь blob из старой таблицы MySQL и создать для нее новую таблицу, стремясь достичь первой нормальной формы. Однако скрывать данные, уже находящиеся в базе данных из blob, в несколько строк в новой таблице, нелегко.MySQL Преобразование столбца базы данных из Blob в отдельные части
Что является самым простым способом достижения преобразования с помощью команды SQL?
Родитель Таблица:
CREATE TABLE TEST.People (
`id` INT AUTO_INCREMENT,
`age` INT,
`height` INT,
`weight` INT ,
`variations` BLOB DEFAULT NULL,
PRIMARY KEY (`id`),
);
Новая таблица:
CREATE TABLE TEST.Variations (
`id` INT AUTO_INCREMENT,
`chr` INT,
`start` INT,
`stop` INT ,
`type` ENUM('SNP','INDEL','CNV') DEFAULT NULL,
PRIMARY KEY (`id`),
);
При запуске SELECT, идентификатор, отклонения от TEST.People; я получаю:
+----+----------------------------------------------------------------------------------------------------------------------+
| id | variations |
+----+----------------------------------------------------------------------------------------------------------------------+
| 3 | xp t !3:124093754-124467278/CNVt 7:78030601-79638023/CNV |
| 6 | xp |
| 9 | xp |
| 12 | xp t !1:84289718-85466763/CNV |
| 15 | xp |
| 18 | xp |
| 21 | xp |
| 24 | xp |
| 27 | xp |
| 30 | xp t !10:166909544-166909544/SNPt !2:66903445-66903445/SNPt !2:166897864-166897864/CNVt !7:6892788-6892788/SNP |
+----+----------------------------------------------------------------------------------------------------------------------+
Так что я хочу, чтобы таблица TEST.Variations иметь после преобразования заключается в следующем:
+----+-----+-----------+-----------+----------+
| id | chr | start | stop | type |
+----+-----+-----------+-----------+----------+
| 3 | 3 | 124093754 | 124467278 | CNV |
| 3 | 7 | 78030601 | 79638023 | CNV |
| 12 | 1 | 84289718 | 85466763 | CNV |
| 30 | 10 | 166909544 | 166909544 | SNP |
| 30 | 2 | 66903445 | 66903445 | SNP |
| 30 | 2 | 166897864 | 166897864 | CNV |
| 30 | 7 | 6892788 | 6892788 | SNP |
+----+-----+-----------+-----------+----------+
это должно быть сделано с некоторыми типами регулярных выражений, скорее всего. Вопрос: '' 'всегда приходит перед вашими строками, которые нужно рубить в отдельные столбцы, когда строки повторяются в текущем блобе? и имеет ли отношение '!' какое-либо отношение к миграции или его следует игнорировать, как в примере? – amaster
Это будет сложно сделать и сделать чек на чистом языке запросов MySQL; правильный инструмент для разбора столбца blob 'changes' - это язык обработки строк, такой как PHP или PERL. –
@ amaster507 - в настоящее время MySQL не реализует функции REGEX_REPLACE. –