Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
из текстового файла в таблицу (Фролов Сергей) 15/05/2009 - 01:35:20
      Re: из текстового файла в таблицу (Фролов Сергей) 15/05/2009 - 04:02:21
      Re: из текстового файла в таблицу (Виталий) 18/05/2009 - 12:42:03

> Original message text:
> From: Фролов Сергей - 15/05/2009 - 01:35:20
> Subject:из текстового файла в таблицу
> -----------------
> Вопрос у меня следующий...
> Есть БД на MySQL. Пишу прогу на Delphi. Мне нужно из текстового файла (логи) перенести все элементы строк в соответствующие поля таблицы, предварительно подкорректировав их (убрать не нужные пробелы и лишние запятые, которые будут потом являться разделителями элементов строк). Просматриваю результаты этих корректировок в МЕМО и сохраняю в отдельный файл. Вроде похоже на правду.... Но когда я пытаюсь импортировать содержимое результирующего файла в таблицу БД, то либо оно переносит только первую строку (командой 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 и начала новой строки.
> Когда я просматриваю записи в таблице после "удачного" копирования первой строки в базу, то в самом последнем столбце, соответствующему последнему элементу в исходной строке,
> то последними символами этого элемента дописываются либо точка какая-то, либо непонятная закорючка (все зависит от того, какой ключ я применяю в самом конце SQL запроса: '\r', '\n' '\t' и так далее...). Или они одновременно оба дописываются...
> Просматриваю записи под Виндой в MySQL Query Browser
> Может сможете подсказать, какие ключи указателей мне нужно поставить в программе, чтобы запрос MySQL правильно их воспринимал
>
> Если поможет - кусок проги с разбором текстовых файлов:
> procedure TForm1.Button1Click(Sender: TObject);
>
> //определяем символы-разделители
> const DelSym = ' ';
> var Text: string; i: integer; Word: string;
> begin
> Text:=Memo1.Lines.Text;
>
> for i := 1 to Length(Text) do
> if Pos(Text[i],DelSym) > 0 then
> Text[i]:=',';
> if Text[1] = ',' then
> Delete(Text,1,1);
> //удаляем двойные запятые
> while Pos(',,',Text) > 0 do
> Delete(Text,Pos(',,',Text),1);
> //Удаление указателей возврата каретки #13 и начала //новой строки #10
> //while Pos(Chr(13),Text) > 0 do
> //Delete(Text,Pos(Chr(13),Text),1);
>
> while Pos(Chr(10),Text) > 0 do
> Delete(Text,Pos(Chr(10),Text),1);
>
> Memo2.Text:=Text;
>
> SaveDialog1.InitialDir:='c:'; //сохраняем файл результатов
> if SaveDialog1.Execute then
> Memo2.Lines.SaveToFile(SaveDialog1.FileName);
>
>


From: Фролов Сергей - 15/05/2009 - 04:02:21
Subject:из текстового файла в таблицу
-----------------
Проблема почти решена...
Не надо было сохранять разобранный исходный файл в виндовом формате .ТХТ
сохраняя результаты в исходный файл (т.е без изменения расширения)
все более-менее корректно втыкается в базу через
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'
Правда вот с последним элементом строки все равно дописывается к нему какая-то закорючка :(
Так я и не вычислил, что обозначает и делает этот элемент (который закорючка... :) )


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
35595



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |