|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Всем привет! Дали мне тут задание на работе и для его решения мне нужно в первую очередь перевести данные из текстового файла в таблицу 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 я работая недавно и естественно еще ни разу не делал импорт/экспорт данных. Поэтому прошу писать ответы с реальными примерами записи команд ну или делится ссылочками на крайний случай. Заранее благодарю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 17:16 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
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 я работая недавно и естественно еще ни разу не делал импорт/экспорт данных. И это повод не учиться? Поэтому прошу писать ответы с реальными примерами записи команд ну или делится ссылочками на крайний случай. Заранее благодарю. Главная ссылка - хелп. Есть даже на русском. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 17:24 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Попробуйте так: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 17:28 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Перед appenв from убрать кавычки (т.к. они не нужны в результирующей таблице) и сделать установку SET date AMERICAN, чтобы дата корректно легла Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 17:33 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Tohan_ORA, Все отлично получилось. Всем спасибо, ну просто подняли настроение, а всего лишь нужна была маленькая строчка. Сразу же хотел задать еще один вопрос, что бы не создавать лишней темы. Короче, забрасываю полученную базу (да и вообще любую), в построитель "Query". Выбираю нужные мне условия - запрос открывается нормально. Но как только начинаю группировать по любому полю на выходе программа дает следующее сообщение: "SQL: Предложение GROUP BY отсутствует или неверно". Хотелось бы узнать, что это за напасть и как с ней бороться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 21:32 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
> Хотелось бы узнать, что это за напасть и как с ней бороться. 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 05:20 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Galyamov Rinat, С группированием разобрался, а вот с переброской инфы из текстового файла я поторопился. Все просто объясняется, я вчера тренировался не на исходном файле тхт, а на файлике содержащим небольшую вырезку из исходника. Разница в том, что первый тхт находился в кодировке ASCII (DOS), а второй в кодировке ANSI(Windows). Так и выходит, что с кодировкой Windows все получается замечательно все циферки и буквы попадают куда надо. А вот с DOS - полная хрень. Во-первых в 1 поле наименование фидера записывается каракулями, далее три поля идут нормально, а вот в последние 4, с показателями энергии, записываются одни нули. Как от этого избавится? Есть у меня мыслишки на счет этого, нужно превести исходный текстовый файл в упорядоченный вид. Например убрать все ковычки и оставить между записями один пробел. Поможет ли такой выход и как его осуществить? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 10:08 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Filetostr(), cpconvert(), strtofile() тебе в помощь. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 10:35 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Galyamov Rinat, А можно ли какой-нибудь командой перекодировать заданный текстовый файл из DOS в Windows? Или перебросить данные из исходного файла в другой текстовый файл, но уже с другой кодировкой? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 10:55 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
de_torosGalyamov Rinat, А можно ли какой-нибудь командой перекодировать заданный текстовый файл из DOS в Windows? Или перебросить данные из исходного файла в другой текстовый файл, но уже с другой кодировкой? Я, конечно, не Ринат, но он как раз и дал необходимые для этого сведения. Трудно между указанными им функциями расставить необходимые для получения нужного результата знаки? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 11:02 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
> А можно ли какой-нибудь командой перекодировать заданный текстовый > файл из DOS в Windows? Или перебросить данные из исходного файла в другой > текстовый файл, но уже с другой кодировкой? Одной командой нет. А вот одной строкой, состоящей из тех (ранее приведенных) функций - запросто. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 11:29 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
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 Думаю, надо убрать лишние пробелы в исходнике, оставив только по одному между нужными значениями. Вот как это сделать? Или может у кого есть мысли, как сделать это по другому? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 13:46 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
de_toros Разница в том, что первый тхт находился в кодировке ASCII (DOS), а второй в кодировке ANSI(Windows).Так и выходит, что с кодировкой Windows все получается замечательно все циферки и буквы попадают куда надо. А вот с DOS - полная хрень.Во-первых в 1 поле наименование фидера записывается каракулями ... Код: plaintext
de_toros ..., далее три поля идут нормально, а вот в последние 4, с показателями энергии, записываются одни нули. Как от этого избавится? Скорее всего в символьных данных где-то не закрыты кавычки или наоборот стоят лишние, а они служат признаком строк в твоём случае Пример: Код: plaintext 1.
Код: plaintext
Код: plaintext
Код: plaintext
Посмотри где данные некорректны в залитой табличке и найди это место в файле источнике-там наверняка прячется баг ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 14:05 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Если у тебя фиксированный размер столбцов. Т.е. на первый столбец всегда отводится ровно 20 символов, на второй - ровно 8 символов и т.п., то в команде APPEND BLANK лучше использовать тип SDF. Т.е. фиксированная ширина столбцов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Далее можно залить данные из промежуточного курсора в конечную таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 14:49 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
Tohan_ORA, Дело точно не в ковычках, хотя если б они отделяли каждое значение столбца было бы проще. А то, что дело не в ковычках я проверил так: поправил несколько строче в исходнике под нужный формат, т.е. между каждым значением стоит один пробел. Ну и все получилось нормально, всмысле нетронутые строчки так и не попали как нужно в таблицу, а вот отредактированные строчки записались "красиво". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 16:18 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
ВладимирМ, К сожалению, значения в столбцах не будут иметь одинаковой длины, хотя конечно большинство строчек будет попадать под эти данные. В общем у меня появилась мыслишка, мне кажется она должна сработать, хотя все это будет выглядеть гемарно. Короче, ставлю 4-ому столбцу тип "Char(30)" и туда будут попадать все значения, после последник ковычек в строке, т.е. было: Код: plaintext 1.
будет, уже в таблице: Код: plaintext 1. 2.
должно получится: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 16:45 |
|
Преобразование текстового файла
|
|||
---|---|---|---|
#18+
de_torosКак вам такой вариант? Вам лучше знать содержимое текстового файла. В общем случае, вопрос разбора текстового файла процесс творческий. Каждый файл разбирается по особому. APPEND FROM работает только в довольно простых случаях. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2008, 17:35 |
|
|
start [/forum/topic.php?fid=41&msg=35682407&tid=1587023]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 358ms |
total: | 525ms |
0 / 0 |