ra.eremeev Опубликовано 20 декабря, 2016 Поделиться Опубликовано 20 декабря, 2016 (изменено) Добрый день! Подскажите, пожалуйста, наверняка кто-то сталкивался с вопросом... В таблицу SQLite необходимо импортировать данные из CSV-файла. Понятно, что можно разносить по записям, или формировать запросы INSERT INTO... Но если таблица достаточно большая, то процесс растянется. Есть ли возможность задействовать механизмы импорта на стандартных компонентах? И если такая возможность есть, возможно ли делать импорт с опцией обновления данных (перезапись уже существующих значений, а не добавление новых)? Изменено 20 декабря, 2016 пользователем ra.eremeev Цитата Ссылка на комментарий
0 Alexander Опубликовано 20 декабря, 2016 Поделиться Опубликовано 20 декабря, 2016 Проще самому написать обработчик. Во-первых, обработчик будет реализован под вашу структуру. Во-вторых, возможность реализации предобработки данных. PS: а какая сложность в реализации обработчика? считать строку, по разделителю выделить данные, полученные данные подставить в параметры запроса. Цитата Ссылка на комментарий
0 ra.eremeev Опубликовано 20 декабря, 2016 Автор Поделиться Опубликовано 20 декабря, 2016 1 час назад, Alexander сказал: PS: а какая сложность в реализации обработчика? считать строку, по разделителю выделить данные, полученные данные подставить в параметры запроса Alexander, никакой сложности нет. Просто стандартные механизмы импорта данных их CSV-файла, реализованные в MySQL, например, позволяют существенно ускорить внесение большого объема данных. Обработчик на таблицу с количеством строк более 100 тыс., например, будет отнимать заментное время (и ресурсы). Цитата Ссылка на комментарий
0 Alexander Опубликовано 20 декабря, 2016 Поделиться Опубликовано 20 декабря, 2016 Существенно ускорить относительно чего? Цитата Ссылка на комментарий
0 ra.eremeev Опубликовано 20 декабря, 2016 Автор Поделиться Опубликовано 20 декабря, 2016 Относительного построчного ввода данных Цитата Ссылка на комментарий
0 Alexander Опубликовано 20 декабря, 2016 Поделиться Опубликовано 20 декабря, 2016 сколько в вашей программе уходит времени на загрузку из файла и сколько на заполнение SQLite? Цитата Ссылка на комментарий
0 ra.eremeev Опубликовано 21 декабря, 2016 Автор Поделиться Опубликовано 21 декабря, 2016 (изменено) 10 часов назад, Alexander сказал: сколько в вашей программе уходит времени на загрузку из файла и сколько на заполнение SQLite? Добрый день! Alexander, вопрос был в другом... Вшитые в БД механизмы импорта/экспорта работают значительно быстрее построчного чтения/обработки/записи данных. Экспорт таблицы в 765 тыс. строк средствами MySQL (SELECT xxx FROM xxx INTO OUTFILE) производится менее 2 сек. Не заменрял аналогичное действие с построчным чтением каждой из 765 тыс. строк, обработкой и последующей записью, но есть ощущение что время будет значительно больше. Повторюсь, вопрос был в другом: есть или нет... Альтернативные варианты реализации понятны Изменено 21 декабря, 2016 пользователем ra.eremeev Цитата Ссылка на комментарий
0 ENERGY Опубликовано 20 апреля, 2017 Поделиться Опубликовано 20 апреля, 2017 Есть у вас какие то сдвиги по теме? http://www.codenewsfast.com/cnf/thread/0/permalink.thr-ng2072q1234 FDDataMove1.Destination := FDMemTable1; FDDataMove1.SourceKind := skText; FDDataMove1.TextFileName := '.......'; FDDataMove1.TextAnalyze := [taDelimSep, taHeader, taFields]; Цитата Ссылка на комментарий
Вопрос
ra.eremeev
Добрый день!
Подскажите, пожалуйста, наверняка кто-то сталкивался с вопросом...
В таблицу SQLite необходимо импортировать данные из CSV-файла.
Понятно, что можно разносить по записям, или формировать запросы INSERT INTO...
Но если таблица достаточно большая, то процесс растянется.
Есть ли возможность задействовать механизмы импорта на стандартных компонентах?
И если такая возможность есть, возможно ли делать импорт с опцией обновления данных (перезапись уже существующих значений, а не добавление новых)?
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.