Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 783

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Вопрос у меня следующий...
Есть БД на MySQL. Мне нужно из текстового файла (логи) перенести все элементы строк в соответствующие поля таблицы, предварительно подкорректировав их (убрать не нужные пробелы и лишние запятые, которые будут потом являться разделителями элементов строк). Просматриваю результаты этих корректировок в МЕМО и сохраняю в отдельный файл. Вроде похоже на правду.... Но когда я пытаюсь импортировать содержимое результирующего файла в таблицу БД, то либо оно переносит только первую строку (командой load data infile 'c:/text_rez.txt' into table temp_CDR fields terminated by ',' lines terminated by '\t';), либо (по команде load data infile 'c:/text_rez.txt' into table temp_CDR fields terminated by ',' lines terminated by '\r\n';) MySQL выдает ошибку: ERROR 1261 (01000): Row 2 doesn't contain data for all columns и вообще ничего не копирует.
Я грешу на неправильные указатели CR и начала новой строки. Может сможете подсказать, какие ключи указателей мне нужно поставить в программе, чтобы запрос MySQL правильно их воспринимал

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2.  
  3.  
  4. var Text: string; i: integer; Word: string;
  5. begin
  6. Text:=Memo1.Lines.Text;
  7.  
  8. for i := 1 to Length(Text) do
  9. if Pos(Text[i],DelSym) > 0 then
  10. Text[i]:=',';
  11. if Text[1] = ',' then
  12. Delete(Text,1,1);
  13.  
  14.  
  15. Delete(Text,Pos(',,',Text),1);
  16.  
  17. //while Pos(Chr(13),Text) > 0 do
  18. //Delete(Text,Pos(Chr(13),Text),1);
  19.  
  20. while Pos(Chr(10),Text) > 0 do
  21. Delete(Text,Pos(Chr(10),Text),1);
  22.  
  23.  
  24.  
  25. Memo2.Text:=Text;
  26.  
  27.  
  28. if SaveDialog1.Execute then
  29. Memo2.Lines.SaveToFile(SaveDialog1.FileName);
  30.  


Фролов Сергей Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Фролов Сергей (статус: Посетитель)
Вопрос отправлен: 14 мая 2009, 20:40
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 15 мая 2009, 13:31; участников в обсуждении: 2.
Фролов Сергей

Фролов Сергей (статус: Посетитель), 14 мая 2009, 20:49 [#1]:

Забыл сказать...
когда я просматриваю записи в таблице после "удачного" копирования первой строки в базу, то в самом последнем столбце, соответствующему последнему элементу в исходной строке,
то последними символами этого элемента дописываются либо точка какая-то, либо непонятная закорючка (все зависит от того, какой ключ я применяю в самом конце SQL запроса: '\r', '\n' '\t' и так далее...). Или они одновременно оба дописываются...
Фролов Сергей

Фролов Сергей (статус: Посетитель), 14 мая 2009, 20:50 [#2]:

и еще добавлю - просматриваю записи под Виндой в MySQL Query Browser
Фролов Сергей

Фролов Сергей (статус: Посетитель), 15 мая 2009, 04:03 [#3]:

Проблема почти решена...
Не надо было сохранять разобранный исходный файл в виндовом формате .ТХТ
сохраняя результаты в исходный файл (т.е без изменения расширения)
все более-менее корректно втыкается в базу через
mysql> load data infile 'c:/bill20090512_042700' into table temp_CDR fields terminated by ',' lines terminated by '\n';
Query OK, 2 rows affected (0.02 sec)

Т.е. разделителем строк является символ новой строки '\n'
Правда вот с последним элементом строки все равно дописывается к нему какая-то закорючка :(
Так я и не вычислил, что обозначает и делает этот элемент (который закорючка... :) )
Косолапов Дмитрий Юрьевич

Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 15 мая 2009, 13:31 [#4]:

Нужны разделители строк \r\n (иначе говоря, CR+LF).

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:49
Выполнено за 0.03 сек.