|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
||||||
Обновление CSV в MySQL31.03.2017, 09:13. Показов 3713. Ответов 23
Метки нет (Все метки)
Здравствуйте форумчане!
У меня есть файлы csv их необходимо загружать в удаленную базу. При этом если такие записи есть то обновлять определенные поля а если нету то добавлять. Файлов много, записей в общей сложности будет свыше 30000, обновление данных раз в неделю. вот то что сам сделал:
На 4800 записей ушло 20 минут.
0
|
||||||
| 31.03.2017, 09:13 | |
|
Ответы с готовыми решениями:
23
Из csv в mysql Обновление базы данных через CSV файл
|
|
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
|
|
| 31.03.2017, 10:12 | |
|
1
|
|
|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
|
| 31.03.2017, 11:15 [ТС] | |
|
4800 записей было в одном файле.
Таких файлов будет 12-13. Мне кажется проблема в методе чтения в файле-поиска в базе-обновления записей
0
|
|
|
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
|
||
| 01.04.2017, 03:29 | ||
|
1
|
||
|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
|
| 01.04.2017, 04:59 [ТС] | |
|
Спасибо за направление пойду изучать.
0
|
|
|
Модератор
4360 / 3430 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
||||||
| 01.04.2017, 17:45 | ||||||
|
30.000 записей... это не много.
используйте транзакцию, это сильно ускорит процесс добавления/обновления данных в базе. вот код на примере SQLITE:
2
|
||||||
|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
|
| 02.04.2017, 10:45 [ТС] | |
|
тип MyIsam. Начал изучать многопоточность и первые же строки от автора "Я боюсь многопоточности в VB .NET"
![]() Может кто то покажет пример многопоточного чтения одного файла?
0
|
|
|
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
|
|||
| 02.04.2017, 11:54 | |||
|
1
|
|||
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
|
| 02.04.2017, 13:39 | |
|
Я бы советовал еще создать индексы на usrusers.login
И во второй части зачем чтение, если будет только добавление в usroperation?
1
|
|
|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
||
| 02.04.2017, 14:04 [ТС] | ||
|
Navthe, спасибо, да я сейчас займусь изучением этого, просто думал это стандартные операции и должен быть какой то быстрый и четкий алгоритм.
Bidgo, для второй части все таблицы будут очищаться и загружаться заново.
0
|
||
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
|||||||
| 02.04.2017, 15:00 | |||||||
|
Например,
1
|
|||||||
|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
|
| 03.04.2017, 01:03 [ТС] | |
|
Bidgo, надо попробовать.XIST, скажите что не так в предложении Bidgo,
0
|
|
|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
||||||
| 03.04.2017, 07:32 [ТС] | ||||||
0
|
||||||
|
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
|
||||||
| 03.04.2017, 07:52 | ||||||
|
Попробуйте так:
0
|
||||||
|
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
|
|
| 03.04.2017, 09:58 [ТС] | |
|
пишет: синтаксическая ошибка в sql запросе.
0
|
|
|
18 / 9 / 4
Регистрация: 04.02.2015
Сообщений: 36
|
|||||||||||||||||||||
| 03.04.2017, 11:03 | |||||||||||||||||||||
Сообщение было отмечено Бормалей как решение
Решение
Предлагаю сразу после
2
|
|||||||||||||||||||||
|
1741 / 1658 / 167
Регистрация: 25.07.2015
Сообщений: 2,720
|
|
| 03.04.2017, 11:56 | |
|
Бормалей,сервер правильно пишет об ошибках, в предложенном запросе их на вскидку несколько.
Почитайте внимательно про использование LOAD DATA INFILE Во-первых , "" - это управляющий символ в MySQL , использовать нужно двойной слэш \\ Во-вторых, если вы используете параметр LOCAL , т.е. предполагается чтения файла с вашей машины, а не с сервера, то должны быть включены разрешения на его использование на сервере и указывать нужно полный путь к файлу c:\\tmp\\file.csv примерно. (в зависимости от версии MySQL он может не понимать \\ , тогда нужно использовать // В-третьих , прочитайте строку к файлу в предложенном примере : там нет разделения вообще никакого между директорией и файлом. В общем читайте доки по Load Data . Настройки его достаточно заморочены( но это только в первый раз) , за то это очень мощный загрузчик. У меня 44 млн записей , разбитые на 6 файлов , загружаются примерно 40 минут , включая индексацию из которых примерно половину времени занимает индексация. 4800 записей для MySQL вообще "ни о чём" . Рекомендую грузить файлы последовательно во временные таблицы и все операции сравнения , апдейта и так далее делать уже между основной таблицей и загруженной временной внутри сервера - это будет гораааздо быстрее , чем REPLACE-ить при загрузке , т.к. при загрузке каждой строки серверу приходится читать всю целевую таблицы построчно... Начиная , если не ошибаюсь, с версии сервера MySql 5.5 , он поддерживает динамическое создание темповой таблицы , являющейся целевой для загрузки файла,/убивать её после обработки и создавать заново с тем же именем для загрузки следующего файла - это бывает необходимо , чтобы под каждый файл, если он имеет разную структуру, не создавать свою временную таблицу. Если же файлы имеют одну структуру, до достаточно просто очищать временную таблицу тем же "truncate table", как вариант. Добавлено через 20 минут Бормалей, хотя...просмотрел повнимательней ваш исходный код и соглашусь с sur1966. У вас там почти всё в порядке. Как мне кажется все тормоза загрузки происходят из-за того , что вы производите обработку целевой таблицы во время самой загрузки - при каждой новой строке серверу приходится читать всю целевую таблицу,причём через ADO.NET . Разделите эти два процесса : сначала считываете файл во временную таблицу на сервер , а потом обновляете целевую . Силами сервера это (обновление) будет происходить значительно быстрее.
0
|
|
|
18 / 9 / 4
Регистрация: 04.02.2015
Сообщений: 36
|
|
| 03.04.2017, 12:03 | |
|
Думается мне, что можно ускорить работу, если не выполнять запрос на добавление или изменение на каждой строке исходного файла, а собирать один большой запрос и потом его выполнять (можно завести счетчик и, например, на каждой 100-й строке выполнять, а потом запрос обнулять).
0
|
|
| 03.04.2017, 12:03 | |
|
Помогаю со студенческими работами здесь
20
csv 2 MySQL utf8 Импорт csv в mysql Импорт из CSV в Mysql csv в mysql не работает csv php mysql Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Контроль корректности заполнения дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|