• 0
ra.eremeev

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

Вопрос

Добрый день!

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

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

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

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

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

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

 

Изменено пользователем ra.eremeev

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

7 ответов на этот вопрос

  • 0

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 час назад, Alexander сказал:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Относительного построчного ввода данных 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 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];

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу