Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как перегнать данные из текстового файла в базу! / 19 сообщений из 19, страница 1 из 1
02.05.2006, 22:14
    #33702761
Лука
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Привет всем !
Учусь-радуюсь-мучаюсь.
Помогите - объясните !
Как перегнать данные из текстового файла в dbf-таблицу !
Что-то встал на одном месте и дальше получения первой строчки не пошло.
Заранее спасибо!
...
Рейтинг: 0 / 0
02.05.2006, 22:50
    #33702807
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Текстовый файл из себя каков будет?

Так вообще HELP APPEND FROM
...
Рейтинг: 0 / 0
02.05.2006, 22:50
    #33702808
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Только сначала CREATE TABLE, конечно.
...
Рейтинг: 0 / 0
03.05.2006, 06:48
    #33703010
Лука
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
В файле суммы, номер и дата идут слитно и все записано в столбец.
Получается следующее:
1234.6709876521/12/06
3234.8675867611/01/02
и т.д
...
Рейтинг: 0 / 0
03.05.2006, 06:52
    #33703012
Лука
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Вот необходимо дату номер и сумму в свое поле определить.
Чета пока у меня глухо :(.
...
Рейтинг: 0 / 0
03.05.2006, 07:20
    #33703037
Трезвый
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Вставить разделитель (например ;) между полями.
Или написать небольшой цикл для считывания значений и занесения в б/д
...
Рейтинг: 0 / 0
03.05.2006, 07:26
    #33703047
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
ЛукаВ файле суммы, номер и дата идут слитно и все записано в столбец.
Получается следующее:
1234.6709876521/12/06
3234.8675867611/01/02
и т.дОткрываешь файл на низком уровне командой FOPEN() (см.HELP) и считываешь строку (у тебя скорее всего одна строчка является одной записью). Из строки выделяешь <Сумму>, <Номер>, <Дату> и организуешь запись в таблицу. Производишь запись. Считываешь следующую строчку и т.д. пока не достигнешь конца файла.
...
Рейтинг: 0 / 0
03.05.2006, 09:19
    #33703163
Как перегнать данные из текстового файла в базу!
это мой исходник для перегона тхт в дбф... вроде всё понятно... :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
close all
SET DATE Italian
SET CENTURY ON
public xCol, xI, nCount 
nCount= 1 
if file("temp.dbf")
  dele file ("temp.dbf")
endif
create table temp (line c( 153 ))

=adir(aFiles,'t*.txt') * это можешь оставить если текстовых файлов много.
xCol=alen(aFiles, 1 )
for xI= 1  to xCol
  append from &aFiles(xI, 1 ) type sdf
endfor

if file("worked.dbf")
  dele file ("worked.dbf")
endif
creat table worked (datum c( 10 ), time c( 8 ), k1 n( 4 , 0 ), telefon c( 20 ), k2 n( 4 , 0 ), nummer c( 20 ), dur c( 8 ), dlit n( 19 , 0 ))
sele temp

*************************************************************************
go top
scan all while !eof()
  xDatum = substr(Line, 1 , 11 )
  xBeginn  = substr(Line, 12 , 8 )
  xk1 = val(substr(Line, 22 , 4 ))
  xNebst = substr(Line, 34 , 16 )
  xk2  = val(substr(Line, 60 , 4 ))
  xnummer = substr(Line, 72 , 16 )
  xDur = substr(Line, 107 , 8 )

  sele worked
  appe blank
  repl Datum with xDatum
  repl time with xBeginn
  repl k1 with xk1
  repl telefon with xNebst
  repl k2 with xk2
  repl Nummer with xNummer
  repl Dur with xDur

  sele temp
endscan
close all 
sele  0 
use worked
go top
REPLACE ALL dlit WITH val(subst(dur, 1 , 2 ))* 3600 +val(subst(dur, 4 , 2 ))* 60 +val(subst(dur, 7 , 2 ))
...
Рейтинг: 0 / 0
03.05.2006, 09:53
    #33703226
BCEZHAIU
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
если на самом деле данные сплошняком идут и они "в цикле" можешь создать от "соответсвующий по полям" пустой дбф-файл и "склеить" свой текстовый с полученной "головкой" в результате получишь дбф.. (имитация перегона данных)
...
Рейтинг: 0 / 0
03.05.2006, 10:05
    #33703262
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Код: plaintext
1.
2.
3.
Create Cursor test (summa n( 7 , 2 ), number c( 7 ), cdate c( 8 ), date d)
Set point to '.'
Append From .... type SDF
Replace all Date with Ctod(cDate)
...
Рейтинг: 0 / 0
03.05.2006, 10:06
    #33703266
Grin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Попробуй так

SET TALK OFF
SET SAFETY OFF
num = ADIR(ar,'*.txt')
if num > 0
for i=1 to num
fnam=ar(i,1)
IF FILE (fnam)=.t.
STORE FOPEN(fnam) to file_handle
STORE FSEEK(file_handle,0) TO m_position
do while !feof(file_handle)
stro = fgets(file_handle)
? stro
* stro переменная которую вам осталось проанализировать и разобрать на нужные поля
enddo
else
wait 'файл '+fnam+' незнайдено'
endif
next i
else
wait 'Незнайдено нўодного файлу *.txt'
endif
...
Рейтинг: 0 / 0
03.05.2006, 10:11
    #33703284
Grin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
2Александр Овчинников
Александр Овчинников
scan all while !eof()
xDatum = substr(Line,1,11)
xBeginn = substr(Line,12,8)
xk1 = val(substr(Line,22,4))
xNebst = substr(Line,34,16)
xk2 = val(substr(Line,60,4))
xnummer = substr(Line,72,16)
xDur = substr(Line,107,8)

sele worked
appe blank
repl Datum with xDatum
repl time with xBeginn
repl k1 with xk1
repl telefon with xNebst
repl k2 with xk2
repl Nummer with xNummer
repl Dur with xDur

sele temp
endscan


попробууте заменить ваш код на
scan all while !eof()
m.Datum = substr(Line,1,11)
m.Beginn = substr(Line,12,8)
m.k1 = val(substr(Line,22,4))
m.Nebst = substr(Line,34,16)
m.k2 = val(substr(Line,60,4))
m.nummer = substr(Line,72,16)
m.Dur = substr(Line,107,8)

sele worked
appe blank
GATH MEMV
sele temp
endscan
...
Рейтинг: 0 / 0
03.05.2006, 10:59
    #33703433
Как перегнать данные из текстового файла в базу!
Grinпопробуйте заменить ваш код спасиб... действительно при больших заливках так грузить быстрее
...
Рейтинг: 0 / 0
03.05.2006, 13:23
    #33703896
karly™
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
2 Лука

хм.. Что тебя останавливает сделать совсем просто?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Set Date British
Set Point to "."
Set Mark to "/"

Create Table t1 ( summa_doc N( 7 , 3 ), no_doc C( 6 ), date_doc D)
Append From text.txt type SDF

Browse last nowait
...
Рейтинг: 0 / 0
03.05.2006, 13:56
    #33704051
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
А ты сам пробовал ? Попробуй и посмотри какие у тебя классные даты получатся
...
Рейтинг: 0 / 0
03.05.2006, 14:13
    #33704126
karly™
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
pivaА ты сам пробовал ? Попробуй и посмотри какие у тебя классные даты получатся Посмотрел внимательно... Действительно, если дата меньше 12, то месяц и дата меняются местами. Хм.. А это что, известный баг?

Если чуть исправить код, то даты преобразуются правильно (да, хакерство, соглашусь ;-) )
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Set Date British
Set Point to "."
Set Mark to "/"

Create Table t1 ( summa_doc N( 7 , 3 ), no_doc C( 6 ), date_doc C( 8 ))
Append From text.txt type SDF

Alter Table t1 alter column date_doc D
Browse last nowait
...
Рейтинг: 0 / 0
04.05.2006, 21:49
    #33708460
Лука
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
Всем огромное спасибо !
...
Рейтинг: 0 / 0
05.05.2006, 09:14
    #33708860
Trurl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
BCEZHAIUесли на самом деле данные сплошняком идут и они "в цикле" можешь создать от "соответсвующий по полям" пустой дбф-файл и "склеить" свой текстовый с полученной "головкой" в результате получишь дбф.. (имитация перегона данных)

Хм, коллега, что-то Вы меня засмущали. Я чего не понял?

1. Каждая запись в DBF (в "простом" случае) идет после байта, служащего для хранения пометки об удалении

2. В "простом" текстовом файле, каждая строка оканчивается двумя байтами (или одним, но это реже) - символом перевода строки и символом возврата каретки.

3. В голове DBF хранится, помимо прочего, число записей. Т.к. вновь созданный файл пуст, то, значит записано "ноль записей"

4. п.п. 1-3 не позволяют просто состыковать голову пустого DBF и файл с исходными данными.

Разве нет?
...
Рейтинг: 0 / 0
06.05.2006, 09:59
    #33712156
BCEZHAIU
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перегнать данные из текстового файла в базу!
> п.п. 1-3 не позволяют просто состыковать голову
> пустого DBF и файл с исходными данными.

позволяют.. хотя незнаю как теперешняя цензура относится к такому вольнодумству но при коммунистах такое проходило (фп2.5)

> В голове DBF хранится, помимо прочего, число записей.
> Т.к. вновь созданный файл пуст, то, значит записано "ноль записей"

верное замечание.. после такого хирургического вмешательства при открытии в фокспро действительно выдаестся красное сообщение - отбой файл испорчен
но! когда тот же файл пытаешься открыть в нортоне выходило сообщение типа вкралась ошибка в заголовок вашего файла а именно кочиство записей ноль а на самом деле не ноль - исправить ? отвечаешь - валяй..

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

мы еще в те года делали и "обратные переходы" - в нортоне открываешь двф ф4 сносишь две перые строки сохроняешь выходищь и текстовый файл готов унутри данные колонками - куда испаряются байты признакудаления и откуда появляются байты переводкаретки одному господу ведомо..
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как перегнать данные из текстового файла в базу! / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]