Перейти к содержимому


Импорт данный из csv


Сообщений в теме: 14

#1 alexols

    Активный участник

  • Пользователи
  • PipPipPip
  • 48 сообщений

Отправлено 16 Июнь 2016 - 07:59

Добрый день.
Настроил импорт данный из csv. Мне важно чтобы записи при импорте не дублировались. Не знаю насколько правильно я поступил, импортирую в том числе и поле ID из файла уверен что данные которые в csv строго уникальны по полю ID и я могу их четко идентифицировать. Вроде все работает но беспокоит автоинкремент этого поля, можно ли его выключить ?

Также неплохо бы заблокировать добавление в таблицу данных пользователем как это сделать ?

#2 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 434 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 16 Июнь 2016 - 15:26

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

#3 alexols

    Активный участник

  • Пользователи
  • PipPipPip
  • 48 сообщений

Отправлено 16 Июнь 2016 - 18:14

Эксперимент показал что автоинкремент отключать нельзя, действительно типовые процедуры перстают работать.

#4 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 346 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 16 Октябрь 2016 - 15:02

Есть возможность отловить данные при импорте до внесения в таблицу? Мне нужно проверить уникальность данных в сочетании двух полей.
Понимаю, что теоретически можно настроить вычисление с условием при импорте, проверять данные и затем удалять. Но это как-то коряво.

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#5 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 346 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 16 Октябрь 2016 - 15:58

Просмотр сообщенияandibrag (16 Октябрь 2016 - 15:02) писал:

Есть возможность отловить данные при импорте до внесения в таблицу?
Как можно остановить импорт данных при совпадении условия?
if ($event['type'] == 'import')
{
$table_id = 440; // таблица Табель учета рабочего времени сотрудников
// f10060 - Таб_N
// f10070 - Дата  
  
	$result = data_select_field($table_id, "f10060, f10070", "f10060 = '", $line['f10060'], "' AND f10070='", $line['f10070']),"'";
	if(sql_num_rows($result)) {------ здесь прервать импорт -----------};
}

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#6 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 346 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 17 Октябрь 2016 - 14:25

Добрый день. Предыдущий вопрос к разработчикам. Пробовал банальные варианты exit, return, break - не работает. Обнуление массива event['change'] - также не дало результат. Подскажите куда копать.

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 734 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Октябрь 2016 - 10:09

Цитата

Пробовал банальные варианты exit, return, break - не работает

Странно, exit вроде как всегда и везде работает. Тогда сам не знаю. Встроенных методов отмены на данный момент нет.

#8 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 346 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 18 Октябрь 2016 - 10:26

Просмотр сообщенияCbCoder (18 Октябрь 2016 - 10:09) писал:

Странно, exit вроде как всегда и везде работает. Тогда сам не знаю. Встроенных методов отмены на данный момент нет.
exit прерывает весь импорт, а не текущей строки.
Когда перехватываю событие $event['type'] == 'import' запись уже внесена в таблицу? На мысль навело то, что через $line можно получить значение полей текущей записи.

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#9 maksn

    Активный участник

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 18 Октябрь 2016 - 23:20

Просмотр сообщенияandibrag (18 Октябрь 2016 - 10:26) писал:

exit прерывает весь импорт, а не текущей строки.
Когда перехватываю событие $event['type'] == 'import' запись уже внесена в таблицу? На мысль навело то, что через $line можно получить значение полей текущей записи.

Если это внутри цикла по строчкам, то можно попробовать continue
.....используется внутри циклических структур для пропуска оставшейся части текущей итерации цикла и, при соблюдении условий, начала следующей итерации.....
"...Сижу, паяю. CRM починяю..."
Мои разработки

#10 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 346 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 23 Октябрь 2016 - 17:42

Просмотр сообщенияmaksn (18 Октябрь 2016 - 23:20) писал:

Если это внутри цикла по строчкам, то можно попробовать continue
Не работает. Говорит цикла нет - Cannot break/continue 1 level.
Мысли о том, что запись внесена в таблицу до того, как обрабатывается вычисление оказалась верной. Как перехватить событие до импорта? В какой момент вызывается функция import-data?

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 734 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 24 Октябрь 2016 - 09:17

Цитата

Как перехватить событие до импорта?

На данный момент - никак. Все вычисления работают после сохранения записи.

#12 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 346 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 29 Октябрь 2016 - 15:07

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

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#13 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 734 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 31 Октябрь 2016 - 09:50

В процессе импорта в таблице config создается запись с name равным "import_continue_info", соответственно в value там засериализованный массив с информацией о стадии процесса. Разве что их как-то сможете использовать. Других вариантов в голову не приходит.

#14 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 346 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 01 Ноябрь 2016 - 17:13

Просмотр сообщенияCbCoder (31 Октябрь 2016 - 09:50) писал:

В процессе импорта в таблице config создается запись с name равным "import_continue_info", соответственно в value там засериализованный массив с информацией о стадии процесса. Разве что их как-то сможете использовать. Других вариантов в голову не приходит.
Попробую. Спасибо.

Творческая группа "ТАВР".

www.MEGATAVR.com Художественная ковка, витражи, мозаика, фрески.

www.iGal.pro Уникальный мангал.


#15 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 434 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 06 Ноябрь 2016 - 20:02

Да сделайте себе отдельную таблицу "Импорт" и потом ее переколбашивайте, как хочется, внешним скриптом, через нажатие кнопки или Крон. Не усложняйте себе жизнь!





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных