powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Преобразование текстового файла
17 сообщений из 17, страница 1 из 1
Преобразование текстового файла
    #35680036
de_toros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Дали мне тут задание на работе и для его решения мне нужно в первую очередь перевести данные из текстового файла в таблицу dbf.
Текстовый файл имеет вид:
"Неопределённый_Фидер" "07/29/08" "17:30" 30 0 140 0 77
"Неопределённый_Фидер" "07/29/08" "18:00" 30 0 140 0 78
"Неопределённый_Фидер" "07/29/08" "18:30" 30 0 146 0 79 ...//и так еще куча похожих строк.
Расшифровываю записи: название_счетчика,дата снятия показания,время окончания интервала измерения, интервал(мин) и 4 числа с показаниями снятой энергии разного вида.
Соответсвенно таблица будет иметь 8 столбцов: первый и третий столбец будут текстового вида, второй - тип дата, последние пять столбцов имеют числовой тип. Соответсвенно вопрос, как разбить их (данные) на нужные столбцы и перенести в dbf.
Сразу признаюсь в FoxPro я работая недавно и естественно еще ни разу не делал импорт/экспорт данных. Поэтому прошу писать ответы с реальными примерами записи команд ну или делится ссылочками на крайний случай. Заранее благодарю.
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35680063
de_torosВсем привет! Дали мне тут задание на работе и для его решения мне нужно в первую очередь перевести данные из текстового файла в таблицу dbf.
Текстовый файл имеет вид:
"Неопределённый_Фидер" "07/29/08" "17:30" 30 0 140 0 77
"Неопределённый_Фидер" "07/29/08" "18:00" 30 0 140 0 78
"Неопределённый_Фидер" "07/29/08" "18:30" 30 0 146 0 79 ...//и так еще куча похожих строк.
Расшифровываю записи: название_счетчика,дата снятия показания,время окончания интервала измерения, интервал(мин) и 4 числа с показаниями снятой энергии разного вида.
Соответсвенно таблица будет иметь 8 столбцов: первый и третий столбец будут текстового вида, второй - тип дата, последние пять столбцов имеют числовой тип.

Н увот и прелестно! Быстренько рисуй табличку/курсор описнной структуры. Только имена и надо придумать.
Соответсвенно вопрос, как разбить их (данные) на нужные столбцы и перенести в dbf.

Первый шаг уже подсказан. Теперь Append from и готово.
Сразу признаюсь в FoxPro я работая недавно и естественно еще ни разу не делал импорт/экспорт данных.
И это повод не учиться?
Поэтому прошу писать ответы с реальными примерами записи команд ну или делится ссылочками на крайний случай. Заранее благодарю.
Главная ссылка - хелп. Есть даже на русском.
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35680079
Tohan_ORA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
create table mytable(fider c( 50 ),dates c( 8 ),times c( 5 ),  и т.д.)

APPEND FROM 'MyFile.txt' DELIMITED WITH TAB WITH ' " '

TAB WITH ' " '-признак строк в файле
WITH TAB -разделитель полей в файле
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35680100
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед appenв from убрать кавычки (т.к. они не нужны в результирующей
таблице) и сделать установку SET date AMERICAN, чтобы дата корректно легла


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35680541
de_toros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tohan_ORA,
Все отлично получилось. Всем спасибо, ну просто подняли настроение, а всего лишь нужна была маленькая строчка.
Сразу же хотел задать еще один вопрос, что бы не создавать лишней темы. Короче, забрасываю полученную базу (да и вообще любую), в построитель "Query". Выбираю нужные мне условия - запрос открывается нормально. Но как только начинаю группировать по любому полю на выходе программа дает следующее сообщение: "SQL: Предложение GROUP BY отсутствует или неверно". Хотелось бы узнать, что это за напасть и как с ней бороться.
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35680784
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Хотелось бы узнать, что это за напасть и как с ней бороться.

C построителем не работал.

Но по групперовке: В группировке должны быть перечисленны все неагрегатные
поля, участвующие в выборке.

т.е.
Select поле1, поле2, поле3, count(*), max(поле4), avg(поле10) from table1;
group by поле1, поле2, поле3

Наличие всех трех полей (поле1, поле2, поле3) обязательно, т.к. они не
являются агрегатными.


PS Можно отключить такое ограничение, но по сути результат при отключом
ограничении не будет иметь смысла.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35681038
de_toros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Galyamov Rinat,
С группированием разобрался, а вот с переброской инфы из текстового файла я поторопился. Все просто объясняется, я вчера тренировался не на исходном файле тхт, а на файлике содержащим небольшую вырезку из исходника. Разница в том, что первый тхт находился в кодировке ASCII (DOS), а второй в кодировке ANSI(Windows).
Так и выходит, что с кодировкой Windows все получается замечательно все циферки и буквы попадают куда надо. А вот с DOS - полная хрень. Во-первых в 1 поле наименование фидера записывается каракулями, далее три поля идут нормально, а вот в последние 4, с показателями энергии, записываются одни нули. Как от этого избавится?
Есть у меня мыслишки на счет этого, нужно превести исходный текстовый файл в упорядоченный вид. Например убрать все ковычки и оставить между записями один пробел. Поможет ли такой выход и как его осуществить?
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35681122
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Filetostr(), cpconvert(), strtofile() тебе в помощь.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35681198
de_toros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Galyamov Rinat,
А можно ли какой-нибудь командой перекодировать заданный текстовый файл из DOS в Windows? Или перебросить данные из исходного файла в другой текстовый файл, но уже с другой кодировкой?
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35681226
de_torosGalyamov Rinat,
А можно ли какой-нибудь командой перекодировать заданный текстовый файл из DOS в Windows? Или перебросить данные из исходного файла в другой текстовый файл, но уже с другой кодировкой?
Я, конечно, не Ринат, но он как раз и дал необходимые для этого сведения. Трудно между указанными им функциями расставить необходимые для получения нужного результата знаки?
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35681363
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> А можно ли какой-нибудь командой перекодировать заданный текстовый
> файл из DOS в Windows? Или перебросить данные из исходного файла в другой
> текстовый файл, но уже с другой кодировкой?

Одной командой нет.

А вот одной строкой, состоящей из тех (ранее приведенных) функций -
запросто.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35681879
de_toros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Galyamov Rinat,
Чето, как то мне не прет, избавляюсь от одной проблемы, появляется другая. Короче с перекодировкой все получилось (оказывается это просто: сначало в строку, потом перекодировка и обратно в файл). Но в последние четыре столбца опять попадают одни нули. И дело вот в чем: первые четыре столбца разделяются между собой одним пробелом, а другие оставшиеся столбцы между собой отделяются больше чем одним пробелом. Видать программа запутывается и присваивает этим последним столбцам "0". Показываю на примере, чтоб было понятно.
есть файл:
"Неопределённый_Фидер" "07/29/08" "17:30" 30 0 140 0 77
"Неопределённый_Фидер" "07/29/08" "18:00" 30 0 140 0 78 ... и т.д.
получается уже в таблице:
Неопределённый_Фидер 07/29/08 17:30 30 0 0 0 0
Неопределённый_Фидер 07/29/08 18:00 30 0 0 0 0
а нужно чтоб было:
Неопределённый_Фидер 07/29/08 17:30 30 0 140 0 77
Неопределённый_Фидер 07/29/08 18:00 30 0 140 0 78
Думаю, надо убрать лишние пробелы в исходнике, оставив только по одному между нужными значениями. Вот как это сделать? Или может у кого есть мысли, как сделать это по другому?
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35681947
Tohan_ORA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
de_toros
Разница в том, что первый тхт находился в кодировке ASCII (DOS), а второй в кодировке ANSI(Windows).Так и выходит, что с кодировкой Windows все получается замечательно все циферки и буквы попадают куда надо. А вот с DOS - полная хрень.Во-первых в 1 поле наименование фидера записывается каракулями ...
Код: plaintext
APPEND FROM 'MyFile.txt' DELIMITED WITH TAB WITH ' " ' as  1251 
где as 1251-кодировка файла -источника
de_toros
..., далее три поля идут нормально, а вот в последние 4, с показателями энергии, записываются одни нули. Как от этого избавится?
Скорее всего в символьных данных где-то не закрыты кавычки или наоборот стоят лишние, а они служат признаком строк в твоём случае
Пример:
Код: plaintext
1.
"Неопределённый_Фидер" "07/29/08" "17:30"  30   0   140   0   77  
"Неопределённый_Фидер" "07/29/08" "18:00"  30   0   140   0   78 
-ок
Код: plaintext
"Неопределённый_Фидер" "07/29/08" " 17 : 30   30   0   140   0   77 
-строка не закрылась -результат с открытой кавычки запихивается в поле№3 до конца строки
Код: plaintext
"Неопределённый_Фидер" "07/29/08"  18 :  00   30   0   140   0   78 
- отсутствие кавычек +табуляция там где не надо
Код: plaintext
"Неопределённый_Фидер" "07/29/08" ""  18 : 00 "  30   0   140   0   78 
-задвоенные кавычки

Посмотри где данные некорректны в залитой табличке и найди это место в файле источнике-там наверняка прячется баг
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35682128
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у тебя фиксированный размер столбцов. Т.е. на первый столбец всегда отводится ровно 20 символов, на второй - ровно 8 символов и т.п., то в команде APPEND BLANK лучше использовать тип SDF. Т.е. фиксированная ширина столбцов

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
* Промежуточный курсор
Create Cursor test (fider c( 22 ), f1 C( 1 ), dates c( 10 ), f2 C( 1 ), times c( 7 ), f3 N( 3 ), f4 N( 2 ), f5 N( 4 ), f6 N( 2 ), f7 N( 3 ))

* Заливаю данные в этот промежуточный курсор
Append From file1.txt type sdf

* Конвертирую строковые данные из  866  в  1251 
REPLACE ALL fider with CPCONVERT( 866 , 1251 ,fider)

* Отбрасываем лишние кавычки
REPLACE ALL fider with AllTrim(fider, ["]), dates with AllTrim(dates,["]), times with AllTrim(times, ["])

* Смотрим результат
go top
BROWSE NOWAIT

Далее можно залить данные из промежуточного курсора в конечную таблицу
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35682407
de_toros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tohan_ORA,
Дело точно не в ковычках, хотя если б они отделяли каждое значение столбца было бы проще. А то, что дело не в ковычках я проверил так: поправил несколько строче в исходнике под нужный формат, т.е. между каждым значением стоит один пробел. Ну и все получилось нормально, всмысле нетронутые строчки так и не попали как нужно в таблицу, а вот отредактированные строчки записались "красиво".
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35682525
de_toros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
К сожалению, значения в столбцах не будут иметь одинаковой длины, хотя конечно большинство строчек будет попадать под эти данные.
В общем у меня появилась мыслишка, мне кажется она должна сработать, хотя все это будет выглядеть гемарно. Короче, ставлю 4-ому столбцу тип "Char(30)" и туда будут попадать все значения, после последник ковычек в строке, т.е.
было:
Код: plaintext
1.
"Неопределённый_Фидер" "07/29/08" "17:30" 30   0   140    0   77 
"Неопределённый_Фидер" "07/29/08" "18:00" 30   0   140    0   78 
... и т.д.
будет, уже в таблице:
Код: plaintext
1.
2.
         fider          Date      VR              Min          En1   En2   En3   En4
Неопределённый_Фидер| 07/29/08| 17:30| 30   0   140    0   77|     |     |     |     |
Неопределённый_Фидер| 07/29/08| 18:00| 30   0   140    0   78|     |     |     |     |
Ну а потом уже потихоньку "разрезать пирог", всмысле отделять значения из поля Min и перекидывать их в соответсвующие поля En1..En4.
должно получится:
Код: plaintext
1.
2.
  fider                 Date      VR   Min  En1  En2  En3  En4
Неопределённый_Фидер| 07/29/08| 17:30| 30 |  0  |140|  0  | 77 |
Неопределённый_Фидер| 07/29/08| 18:00| 30 |  0  |140|  0  | 78 |
Как вам такой вариант?
...
Рейтинг: 0 / 0
Преобразование текстового файла
    #35682719
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
de_torosКак вам такой вариант?
Вам лучше знать содержимое текстового файла. В общем случае, вопрос разбора текстового файла процесс творческий. Каждый файл разбирается по особому. APPEND FROM работает только в довольно простых случаях.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Преобразование текстового файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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