Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Таблица без уникального значения
VeRTak  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 18 дней
Карма: 13




У меня есть связи таблиц, и в данной таблице мне не нужно уникальное значение вообще, но тогда я не могу редактировать, удалять записи. Ситуация сложилась из-за того что я импортирую скриптом xml файл, так вот там нет id, и если импортировать через REPLACE, он просто не заменяет а добавляет заново по кругу все записи. И того получается повтор записей, как быть в данной ситуации?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 396
Пользователь №: 40589
На форуме: 2 года, 8 месяцев, 14 дней
Карма: 22




если у тебя там нет уникальных записей - зачем же ты делаешь реплейс? просто добавляй новые.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 18 дней
Карма: 13




Цитата (depp @ 11.08.2017 - 21:29)
если у тебя там нет уникальных записей - зачем же ты делаешь реплейс? просто добавляй новые.


А старые что предлагаешь удалять? Данный вариант мне не подходит, так как в таблице есть записи которые еще добавляются с сайта

Просто суть в чем если привязать к данной таблице id, то вот что получается к примеру я импортирую файл и к примеру заканчивается на 1000 id, затем через неделю идет новый импорт и все эти 1000 id, добавляются заново, и тем самым получаются дублирующее записи


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6050
Пользователь №: 1
На форуме: 11 лет, 6 месяцев, 11 дней
Карма: 129

Не пью :
22 года, 11 месяцев, 11 дней


Значит остается одно: перед добавлением строки поиском искать эту строку, и если найдена, не добавлять.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9006
Пользователь №: 26630
На форуме: 6 лет, 5 месяцев, 16 дней
Карма: 615




Цитата (VeRTak @ 11.08.2017 - 18:03)
У меня есть связи таблиц, и в данной таблице мне не нужно уникальное значение вообще, но тогда я не могу редактировать, удалять записи.

Не находишь противоречия в своих словах?
Если эти записи нужно редактировать, значит их нужно как то идентифицировать, значит первичный ключ всё таки нужен?

Цитата (VeRTak @ 12.08.2017 - 04:53)
Просто суть в чем если привязать к данной таблице id, то вот что получается к примеру я импортирую файл и к примеру заканчивается на 1000 id, затем через неделю идет новый импорт и все эти 1000 id, добавляются заново, и тем самым получаются дублирующее записи

кто сказал что ключ должен быть обязательно авто инкрементом? Учитывая что у входных данных нет своего идентификатора, можно использовать md5 как вариант.

ALTER TABLE `table_name` ADD `id` VARCHAR(32) NOT NULL, ADD PRIMARY KEY (`id`);
UPDATE `table_name` SET `id` = MD5(CONCAT_WS('', `field_1`, `field_2`, `field_3`,`field_n`));

таким образом ты сможешь однозначно идентифицировать записи, и даже после модификации импортированных данных в таблице избежать дублирования.
Единственный нюанс, если в таблице уже есть модифицированные относительно xml данные, такие дубли нужно будет исправить в ручную.

UPD исправил CONCAT на CONCAT_WS, первая функция возвращает NULL, если хотя бы один из аргументов NULL.

Это сообщение отредактировал killer8080 - 12.08.2017 - 11:49
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 18 дней
Карма: 13




killer8080, FatCat

Допустим. Но
Я заливаю целый xml файл. Без какого либо парсера на стороне сервера.


LOAD XML LOCAL INFILE 'File.xml'
REPLACE
INTO TABLE test
ROWS IDENTIFIED BY '<test>'


Как то так это происходит, все проходит очень быстро что мне и нужно. И проблема всего с одной таблицей, сам файл достаточно большой. Я не хочу затрагивать парсер, всего из-за одной таблицы, вот и пытаюсь найти выход в данной ситуации.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
ZSH  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 718
Пользователь №: 18668
На форуме: 8 лет, 5 дней
Карма: 51




Цитата
и в данной таблице мне не нужно уникальное значение вообще

похоже что все таки нужно
Есть же какие то поля которые никогда не меняются, как вариант создать составной уникальный индекс по нескольким полям, и получится если нет в базе такого, вставится, если есть произойдет замена
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 18 дней
Карма: 13




ZSH

Вообще таблица состоит из complexid и subwayid. complexid - неизменна, а вот subwayid меняется. Но на счет уникального ключа, дело в том что complexid может быть равен 15, и таких может быть много просто с разными subwayid. Я уже думал об этом, только я вот не понял по поводу уникальности по нескольким полям, это как?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9006
Пользователь №: 26630
На форуме: 6 лет, 5 месяцев, 16 дней
Карма: 615




Цитата (VeRTak @ 12.08.2017 - 12:46)
Я не хочу затрагивать парсер,

и не нужно, повесь тригер на before insert и в нём генери хеш для ключа
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 18 дней
Карма: 13




killer8080 В точку. Тригер. Как же я забыл. Спасибо. Еще же прошлой раз когда спрашивал про заливку xml рассматривал данный вариант и совсем вылетело из головы


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
ZSH  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 718
Пользователь №: 18668
На форуме: 8 лет, 5 дней
Карма: 51




Цитата
только я вот не понял по поводу уникальности по нескольким полям, это как?

создать обычный уникальный ключ только прицепить его на два поля, у тебя же как я понял complexid и subwayid если вместе их взять уникальные
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9006
Пользователь №: 26630
На форуме: 6 лет, 5 месяцев, 16 дней
Карма: 615




Цитата (VeRTak @ 12.08.2017 - 13:10)
не понял по поводу уникальности по нескольким полям, это как?

составной индекс же
ALTER TABLE `table_name` ADD PRIMARY KEY `key_name` (`field_1`, `field_2`);

это вариант предпочтительней, при условии что комбинации этих полей уникальны
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 18 дней
Карма: 13




Цитата (killer8080 @ 12.08.2017 - 13:21)
это вариант предпочтительней, при условии что комбинации этих полей уникальны


Да уникальны. Сейчас попробую


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9006
Пользователь №: 26630
На форуме: 6 лет, 5 месяцев, 16 дней
Карма: 615




Цитата (VeRTak @ 12.08.2017 - 13:22)
Да уникальны

тогда это лучший вариант, только разрули дубли если они уже есть, перед тем как создавать индекс.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VeRTak  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 935
Пользователь №: 41530
На форуме: 2 года, 1 месяц, 18 дней
Карма: 13




killer8080 ZSH

Спасибо огромное доброе люди. Работает. И даже больше скажу, работает еще лучше чем я предполагал. Он не заменяет запись если изменился subwayid. А добавляет новую запись, что мне и нужно!


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса