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

Так вообще HELP APPEND FROM
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #33702808
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сначала CREATE TABLE, конечно.
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #33703010
Лука
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В файле суммы, номер и дата идут слитно и все записано в столбец.
Получается следующее:
1234.6709876521/12/06
3234.8675867611/01/02
и т.д
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #33703012
Лука
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот необходимо дату номер и сумму в свое поле определить.
Чета пока у меня глухо :(.
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #33703037
Трезвый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставить разделитель (например ;) между полями.
Или написать небольшой цикл для считывания значений и занесения в б/д
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #33703047
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛукаВ файле суммы, номер и дата идут слитно и все записано в столбец.
Получается следующее:
1234.6709876521/12/06
3234.8675867611/01/02
и т.дОткрываешь файл на низком уровне командой FOPEN() (см.HELP) и считываешь строку (у тебя скорее всего одна строчка является одной записью). Из строки выделяешь <Сумму>, <Номер>, <Дату> и организуешь запись в таблицу. Производишь запись. Считываешь следующую строчку и т.д. пока не достигнешь конца файла.
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #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
Как перегнать данные из текстового файла в базу!
    #33703226
BCEZHAIU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если на самом деле данные сплошняком идут и они "в цикле" можешь создать от "соответсвующий по полям" пустой дбф-файл и "склеить" свой текстовый с полученной "головкой" в результате получишь дбф.. (имитация перегона данных)
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #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
Как перегнать данные из текстового файла в базу!
    #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
Как перегнать данные из текстового файла в базу!
    #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
Как перегнать данные из текстового файла в базу!
    #33703433
Grinпопробуйте заменить ваш код спасиб... действительно при больших заливках так грузить быстрее
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #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
Как перегнать данные из текстового файла в базу!
    #33704051
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты сам пробовал ? Попробуй и посмотри какие у тебя классные даты получатся
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #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
Как перегнать данные из текстового файла в базу!
    #33708460
Лука
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо !
...
Рейтинг: 0 / 0
Как перегнать данные из текстового файла в базу!
    #33708860
Trurl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BCEZHAIUесли на самом деле данные сплошняком идут и они "в цикле" можешь создать от "соответсвующий по полям" пустой дбф-файл и "склеить" свой текстовый с полученной "головкой" в результате получишь дбф.. (имитация перегона данных)

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

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

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

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

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

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

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

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

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

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

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


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