Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузка в *.txt / 25 сообщений из 26, страница 1 из 2
16.05.2005, 10:35
    #33066415
Akel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Подскажите, плиз. Мне нужно имеющиеся данные из таблиц выгрузить в текстовый файл. Как это можно проделать? Желательно чтоб еще можно было указать путь.
...
Рейтинг: 0 / 0
16.05.2005, 10:39
    #33066424
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
COPY TO FileName
[FIELDS FieldList]
[Scope] [FOR lExpression1] [WHILE lExpression2]
[[WITH] CDX] | [[WITH] PRODUCTION]
[NOOPTIMIZE]
[[TYPE] [FOXPLUS | FOX2X | DIF | MOD
| SDF | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
| DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB]]]
[AS nCodePage]

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Opens Customer table

COPY NEXT 3 TO temp TYPE DELIMITED
WAIT WINDOW 'This is the delimited text file' NOWAIT
MODIFY FILE temp.txt
DELETE FILE temp.txt
...
Рейтинг: 0 / 0
16.05.2005, 10:40
    #33066433
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Например:

Код: plaintext
1.
select MyTable
COPY TO "C:\Мои документы\MyFile.txt" TYPE DELIMITED
...
Рейтинг: 0 / 0
16.05.2005, 10:56
    #33066479
Akel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Мне нужно примерно в следущем виде, чтоб получилось:
Код: plaintext
1.
2.
#(переменная  1 )#MyTable.datedoc#MyTable.date#(переменная  2 )#Kassa.account#Org.account#(Переменная  3 )## 0 # 9 # 1 
* новая строка
#MyTable.numberdoc#MyTable.summa
...
Рейтинг: 0 / 0
16.05.2005, 12:12
    #33066733
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Почитай описание команды

TEXT ... ENDTEXT Command

Ну, или вручную, через FOPEN(), FWRITE()
...
Рейтинг: 0 / 0
16.05.2005, 14:48
    #33067311
ser57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Я понял тебе надо файл *.dbf сбросить в текстовый файл с разделителем #.
Это обеспечивает команда Copy to имя файла TYPE DELIMITED WITH #
...
Рейтинг: 0 / 0
16.05.2005, 19:43
    #33068230
Akel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
ВладимирМПочитай описание команды

TEXT ... ENDTEXT Command

Ну, или вручную, через FOPEN(), FWRITE()
Почитал..., целых пол дня бьюсь и никак.
Может дашь ссылочку где более менее подробно написано, если не трудно?!
просто не пойму как внутренее содержание TEXT ... ENDTEXT отправить в текстовый файл.

ser57Я понял тебе надо файл *.dbf сбросить в текстовый файл с разделителем #.
Это обеспечивает команда Copy to имя файла TYPE DELIMITED WITH #
Не совсем так, мне нужно сбросить не все данные, а только избранные, причем из разных таблиц(на крайняк запомню все в глобальных переменных)и это в перемешку с существующими перемеными.
И кстати пробовал экспортировать с WITH # он мне еще запятые сует и не везде разделитель ставит.
...
Рейтинг: 0 / 0
16.05.2005, 21:14
    #33068337
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Вот простейший пример записи Log-а ошибок выполнения команд на SQL сервере в текстовый файл:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
LPARAMETERS lErrorNumber, lTextError, txtCommandSQL
*-- Процедура записывает сообщение об ошибке в файл ошибок
#DEFINE		LOGFILE		"ERRODBC.TXT"
LOCAL lFile
IF !DIRECTORY("LOG")
	MKDIR LOG
ENDIF
m.lFile = "LOG\" + LOGFILE
SET ALTERNATE TO (m.lFile) ADDITIVE
SET CONSOLE OFF
SET ALTERNATE ON
? "**********" + DTOC(DATE()) + "  " + TIME() + "**********"
? "ODBC драйвер вернул ошибку № " + ALLTRIM(STR(m.lErrorNumber))
? "Сервер: " + THIS.SQLServer
? "SQL-Login: " + THIS.User_login 
? lTextError
? "Пользователь - " + SYS( 0 )
? "Команда " + m.txtCommandSQL
?  
SET ALTERNATE OFF
SET ALTERNATE TO
SET CONSOLE ON

С уважением, Алексей.

P.S. Этот метод расположен в классе - "обертки" ( wrapper), методы которого "общаются" с SQL-сервером:
THIS.SQLServer - имя SQL-сервера
THIS.User_login - Login пользователя
...
Рейтинг: 0 / 0
16.05.2005, 23:27
    #33068433
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Akel ВладимирМПочитай описание команды

TEXT ... ENDTEXT Command

Ну, или вручную, через FOPEN(), FWRITE()
Почитал..., целых пол дня бьюсь и никак.
Может дашь ссылочку где более менее подробно написано, если не трудно?!
просто не пойму как внутренее содержание TEXT ... ENDTEXT отправить в текстовый файл.

Так в описании к этой команде есть пример. Но если не понятно, то примерно так:

Код: 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.
* Пример работы Text...EndText

* Формируем исходную таблицу
CREATE CURSOR test (testId I, NickName C( 50 ), DateModify T)
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 1 , "Первая строка", DateTime())
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 2 , "Вторая строка", DateTime())
		
* Создаем текстовый файл, куда пойдет запись
STORE FCREATE('names.txt') TO _TEXT
IF _TEXT = - 1 
	* Создать файл не удалось, прерываемся
	RETURN
ENDIF

* Необходимые настройки
SET TALK OFF
SET TEXTMERGE ON

* Теперь, собственно экспорт
TEXT
	Заголовок текстового файла
Дата создания <<DATE()>> Время создания <<TIME()>>
=================================================
ENDTEXT

* Экспорт из таблицы
LOCAL lnI
lnI =  0 
select test
SCAN
	lnI = m.lnI+ 1 
	TEXT
Строка <<m.lnI>>#<<test.testId>>#<<AllTrim(test.NickName)>>#<<test.DateModify>>
	ENDTEXT
ENDSCAN

* Закрываем текстовый файл
FCLOSE(_TEXT)
* Смотрим, что получилось
MODIFY FILE names.txt

Т.е. вкратце, идея заключается в следующем:

То, что находится между ключевыми словами TEXT и ENDTEXT печатается в файл "как есть". Буквально. С точностью до символа. В специальных двойных угловых скобках указываются функции FoxPro, значение которых будет вычислено перед тем, как вставить в тектовый файл.


Хендл текcтового файла, куда пойдет запись должен быть сохранен в системной переменной _TEXT


Для активизации экспорта в текстовый файл необходимо сделать настройку SET TEXTMERGE ON
...
Рейтинг: 0 / 0
17.05.2005, 10:29
    #33068794
Akel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Огромное спасибо!!! "Разживал" очень подробно и понятно=)))
Все получается, только маленькая проблемка, он начинает заносить со второй строки, т.е. первая идет как переход на новую строку, а мне надо бы все с первой строки. Может, что то нужно настроить?
...
Рейтинг: 0 / 0
17.05.2005, 11:06
    #33068900
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
При использовании TEXT...ENDTEXT избавиться от первой пустой строки невозможно. Но существует еще операторы "\|\\", которые работают при тех же настройках.

Одиночный обратный слеш - печать с новой строки
Двойной обратный слеш - печать в той же строке, без перехода на новую строку

Вот альтернативный вариант того же кода

Код: 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.
* Пример работы Text...EndText

* Формируем исходную таблицу
CREATE CURSOR test (testId I, NickName C( 50 ), DateModify T)
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 1 , "Первая строка", DateTime())
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 2 , "Вторая строка", DateTime())
		
* Необходимые настройки
SET TALK OFF
SET TEXTMERGE ON NOSHOW
SET TEXTMERGE TO names.txt

\\	Заголовок текстового файла
\Дата создания <<DATE()>>
\\ Время создания <<TIME()>>
\=================================================

* Экспорт из таблицы
LOCAL lnI
lnI =  0 
select test
SCAN
	lnI = m.lnI+ 1 
* Альтернативный вариант
*\Строка <<m.lnI>>#<<test.testId>>#<<AllTrim(test.NickName)>>#<<test.DateModify>>
	TEXT
Строка <<m.lnI>>#<<test.testId>>#<<AllTrim(test.NickName)>>#<<test.DateModify>>
	ENDTEXT
ENDSCAN

* Закрываем текстовый файл
SET TEXTMERGE TO
SET TEXTMERGE OFF

* Смотрим, что получилось
MODIFY FILE names.txt

Указание выходного файла через SET TEXTMERGE TO или через _TEXT=FOPEN() являются взаимозаменяемыми. Это просто разный синтаксис одного и того же.

Как видно из примера, можно использовать одновременно и синтаксис "\|\\" и TEXT...ENDTEXT. Нельзя только вкладывать их друг в друга. Точнее, можно, но вложенные опреаторы будут восприняты как обычный текст и выведены в результирующий текстовый файл.
...
Рейтинг: 0 / 0
17.05.2005, 11:27
    #33068975
Akel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Спасибо, получилось=)))
Кстати, может знаешь где help можно скачать нормальный, желательно на русском языке. Просто у меня не полный и глючит.
Еще раз огромное спасибо , ты мне очень сильно помог !!!!!=)))
...
Рейтинг: 0 / 0
17.05.2005, 11:51
    #33069048
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
На русском языке существует только HELP по VFP3. Но в данном случае - он вполне подойдет. А вообще-то, HELP ко всем версиям FoxPro можно скачать здесь

http://vfp.narod.ru/Briefcase/Briefcase.htm
...
Рейтинг: 0 / 0
17.05.2005, 12:35
    #33069229
Akel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Оки, посмотрю.
Все файл получился, только одно "НО" даже незнаю маленькое или нет. Кодировка нужна DOS, а не WIN.
...
Рейтинг: 0 / 0
17.05.2005, 12:38
    #33069247
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
CPCONVERT(nCurrentCodePage, nNewCodePage, cExpression)
скачайте быстрее хелп !!!
естественно эту команду нужно применить на каждой строчке записывемой в файл
...
Рейтинг: 0 / 0
17.05.2005, 12:44
    #33069258
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
AkelВсе файл получился, только одно "НО" даже незнаю маленькое или нет. Кодировка нужна DOS, а не WIN.
Для конвертации текстовых данных в нужную кодовую страницу используют функцию

Код: plaintext
1.
2.
CPCONVERT(Номер_текущей_кодовой_страницы, ;
	Номер_нужной_кодовой_страницы, ;
	Конвертируемый текст)

В твоем случае это будет выглядеть так:

Код: plaintext
1.
2.
TEXT
<<CPCONVERT( 1251 , 866 ,AllTrim(MyTable.MyField))>>
ENDTEXT

Можно создать весь файл в кодировке Win, а потом сразу весь его и конвертировать:

Код: plaintext
1.
2.
3.
LOCAL lcFile
lcFile = FileToStr("MyFile.txt")
lcFile = CPCONVERT( 1251 , 866 ,m.lcFile)
StrToFile(m.lcFile,"MyFile.txt")

Функции FileToStr() и StrToFile() введены с версии VFP6
...
Рейтинг: 0 / 0
17.05.2005, 12:53
    #33069282
Akel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Блин, у меня нет слов=))) Супер все работает=)))
Терь шаблон грузится и все четко отрабатывает=)))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
02.10.2014, 11:56
    #38764550
oleg505
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Классный пост , только у меня проблема с пустой строкой так и не ушла , мне надо чтоб без заголовка сразу строки из базы шли и все . И еще хотел спросить как мне название файла .тхт менять через переменную скажем дата, время или месяц словом ? Спасибо заранее.
...
Рейтинг: 0 / 0
02.10.2014, 12:38
    #38764645
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Akel, русские хэлпы VFP9 есть на ссылках http://vfpx.codeplex.com/releases/view/10203 (dv_foxhelp_as.rar) и http://eknigi.org/raznoe/17863-microsoft-visual-foxpro-v90-russian-help-menu.html (vfp9ru.rar)
Учите английский!
...
Рейтинг: 0 / 0
02.10.2014, 12:47
    #38764661
Rostislav D. Kudryashov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
oleg505, так чего тебе, дитятко, надо? Как расшифровать твой вопрос?
oleg505чтоб без заголовка сразу строки из базы шли и все
Уже ведь был ответ:
COPY TO <FileName> SDF
- даёт именно только строки записей из таблицы и "всё", т.е. ничего кроме.
...
Рейтинг: 0 / 0
02.10.2014, 17:28
    #38765172
oleg505
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Rostislav D. Kudryashov,
Я так то не слепой , и далеко не дитятко , или тут все кто написал больше 200 сообщений всем кто пишет первое может хамить не зная человека в лицо ? Как выше изложено , что строки в выгружаемом файле необходимо разделить , и уважаемый ВладимирМ это показывает , там как раз для шипко зрячих речь идет о пустой строке , которая в начале формируется , вот ее мне необходимо убрать и разделить записи ";" Теперь вопрос лично к Вам уваавемый Rostislav D. Kudryashov напишите пожалуйста ,как при помощи команды COPY TO <FileName>SDF разделить строки ";". Если Вы мне поможете при помощи данной команды это сделать буду благодарен.
...
Рейтинг: 0 / 0
02.10.2014, 17:41
    #38765199
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Код: sql
1.
COPY TO mytxt.txt DELIMITED WITH CHARACTER ';'
...
Рейтинг: 0 / 0
02.10.2014, 17:53
    #38765209
oleg505
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Dima T,
Пробовал , там ковычки "" они мне не нужны , нужны чистые строки разделенные ;
...
Рейтинг: 0 / 0
02.10.2014, 18:05
    #38765230
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
Dima T
Код: sql
1.
COPY TO mytxt.txt DELIMITED WITH CHARACTER ';'



ccontent = FILETOSTR("mytxt.txt")
ccontent = STRTRAN(ccontent, '"', '')
STRTOFILE(ccontent, "mytxt.txt")
...
Рейтинг: 0 / 0
02.10.2014, 18:26
    #38765267
oleg505
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка в *.txt
IgorNG,
Спасибо !!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузка в *.txt / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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