Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Импорт большого CSV файла

Delphi , Базы данных , ASCII и CSV

Импорт большого CSV файла

Скачивание файла.
Размер: неизвестно (скачено 45%).


var s: String; f: TextFile;
AssignFile(f, 'D:\\INPUT.TXT);
Reset(f);
while not EOF(f) do
  begin
   ReadLn(s, f);
   ShowMessage(GetField(s, 1));  {The first field\}
   ShowMessage(GetField(s, 6));  {The sixth field\}
   ShowMessage(GetField(s, 25)); {will return '' if no 25 column...\}
  end;
CloseFile(f);

{ ==== This function will return a field from a delimited string. ==== \}
function GetField(InpString: String; fieldpos: Integer): String;
var
  c: Char;
  curpos, i: Integer;
begin
  curpos := 1;
  for i := 1 to fieldpos do
    begin
     result := ''; if curpos > Length(InpString) then Break;
     repeat
       c := InpString[curpos]; Inc(curpos, 1);
       if (c = '"') or (c = #13) or (c = #10) then c := ' ';
       if c <> ',' then result := result + c;
       until (c = ',') or (curpos > Length(InpString))
    end;
  if (curpos > Length(InpString)) and (i < fieldpos) then result := '';
  result := Trim(result);
end;

{ ==== This function will trim a string removing spaces etc. ==== \}
function Trim(inp_str: String): String;
var
  i: Integer;
begin
  for i := 1 to Length(inp_str) do if inp_str[i] <> ' ' then Break;
  if i > 1 then Delete(inp_str, 1, i - 1);
  for i := Length(inp_str) downto 1 do if inp_str[i] <> ' ' then Break;
  if i < Length(inp_str) then Delete(inp_str, i + 1, Length(inp_str));
  result := inp_str;
  if result = ' ' then result := '';
end;

Программа на Delphi для импорта больших файлов CSV. Программа состоит из двух основных частей: кода для импорта файла и двух вспомогательных функций.

Импорт файла

Программа начинается с присваивания файла переменной f с помощью функции AssignFile. Затем она сбрасывает указатель на файл к началу файла с помощью функции Reset. Программа затем enters a loop, который продолжается до тех пор, пока не достигнет конца файла (EOF). В каждой итерации программы читает строку из файла с помощью функции ReadLn и хранит ее в переменной s.

Программа затем использует функцию GetField, чтобы извлечь конкретные поля из строки, и отображает их с помощью функции ShowMessage. Первое поле отображается с индексом 1, шестое поле - с индексом 6, а 25-е поле (или пустая строка, если нет 25-го поля) - с индексом 25.

Вспомогательные функции

В программе есть две вспомогательные функции: GetField и Trim.

Функция GetField

Эта функция принимает строку (InpString) и целое число (fieldpos) в качестве входных параметров. Она возвращает подстроку InpString, соответствующую полю на позиции fieldpos. Функция iterates over characters in InpString, skipping commas, quotes and line breaks until it reaches the beginning or end of the desired field.

Функция Trim

Эта функция принимает строку (inp_str) в качестве входного параметра и возвращает отформатированную версию этой строки. Она это делает, iterates over characters in inp_str from both ends and removes any leading or trailing whitespace characters until it finds a non-whitespace character.

Альтернативное решение

Если вам нужно импортировать большие файлы CSV, вы может хотеть использовать специализированную библиотеку или компонент для парсинга CSV вместо написания собственного кода. Это может быть более эффективно и надежно, чем реализация собственного логика парсинга. Кроме того, если файл очень большой, вам может потребоваться обработка его в chunks, а не загрузка всей файла в память одновременно.

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

Автор предлагает способ импорта большого CSV-файла в Delphi с помощью функции GetField, которая возвращает поле из строки, а также функции Trim для удаления пробелов и других символов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: ASCII и CSV ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:25:23/0.0038089752197266/0