Перейти к содержанию
Fire Monkey от А до Я
  • 0

Импорт данных в БД из CSV


ra.eremeev

Вопрос

Добрый день!

Подскажите, пожалуйста, наверняка кто-то сталкивался с вопросом...

В таблицу SQLite необходимо импортировать данные из CSV-файла.

Понятно, что можно разносить по записям, или формировать запросы INSERT INTO...

Но если таблица достаточно большая, то процесс растянется.

Есть ли возможность задействовать механизмы импорта на стандартных компонентах?

И если такая возможность есть, возможно ли делать импорт с опцией обновления данных (перезапись уже существующих значений, а не добавление новых)?

 

Изменено пользователем ra.eremeev
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Проще самому написать обработчик. Во-первых, обработчик будет реализован под вашу структуру.

Во-вторых, возможность реализации предобработки данных.

 

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

Ссылка на комментарий
  • 0
1 час назад, Alexander сказал:

PS: а какая сложность в реализации обработчика? считать строку, по разделителю выделить данные, полученные данные подставить в параметры запроса

Alexander, никакой сложности нет.

Просто стандартные механизмы импорта данных их CSV-файла, реализованные в MySQL, например, позволяют существенно ускорить внесение большого объема данных.

Обработчик на таблицу с количеством строк более 100 тыс., например, будет отнимать заментное время (и ресурсы).

Ссылка на комментарий
  • 0
10 часов назад, Alexander сказал:

 

сколько в вашей программе уходит времени на загрузку из файла и сколько на заполнение SQLite?

 

Добрый день!

Alexander, вопрос был в другом...

Вшитые в БД механизмы импорта/экспорта работают значительно быстрее построчного чтения/обработки/записи данных.

Экспорт таблицы в 765 тыс. строк средствами MySQL (SELECT xxx FROM xxx INTO OUTFILE) производится менее 2 сек.

Не заменрял аналогичное действие с построчным чтением каждой из 765 тыс. строк, обработкой и последующей записью, но есть ощущение что время будет значительно больше.

Повторюсь, вопрос был в другом: есть или нет... Альтернативные варианты реализации понятны

 

Изменено пользователем ra.eremeev
Ссылка на комментарий
  • 0

Есть у вас какие то сдвиги по теме?

http://www.codenewsfast.com/cnf/thread/0/permalink.thr-ng2072q1234

 

FDDataMove1.Destination := FDMemTable1;
  FDDataMove1.SourceKind := skText;
  FDDataMove1.TextFileName := '.......';
  FDDataMove1.TextAnalyze := [taDelimSep, taHeader, taFields];

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...