импорт из txt | |
---|---|
vacikoff Сообщений: 9 Дата регистрации: 29.03.2020 |
Подскажите как реализовать импорт данных из txt следующего вида:
Заранее спасибо! |
Re: импорт из txt | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
А у тебя какие варианты? Какие подходящие команды фокса знакомы?
|
Re: импорт из txt | |
---|---|
vacikoff Сообщений: 9 Дата регистрации: 29.03.2020 |
скопом вставить у меня получается без проблем командой
Пробую функцию FREAD() но она вытаскивает все данные с файла а мне нужен перебор по строчкам Исправлено 1 раз(а). Последнее : vacikoff, 06.04.20 10:32 |
Re: импорт из txt | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Прелестно. Цитата:С чего бы это? Цитата:Кто вам сказал такую чушь? Да и с каких пор данные стали лежать НА файле? Вроде бы всегда лежали В файле? И, соответственно, данные всегда брались ИЗ файла. Цитата:Еще раз - с чего бы это? Инфа для размышлений:
------------------ Лень - это неосознанная мудрость. Исправлено 1 раз(а). Последнее : ssa, 06.04.20 10:42 |
Re: импорт из txt | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Хорошие знания присутствуют! ) Так и вставляй скопом (в табличку), удали из таблички первые ненужные записи, у них в первом поле будет что-то несуразное, может символ звездочки, может 0.
Если через FOPEN, то читать надо не FREAD (прочитать заданное кол байт), а FGETS (прочитать строку до разделителя строк). Далее каждую строку разбирать, например, ALINES (GETWORDNUM не очень удобен, когда разделитель ";" следует сериями, без пробелов/символов, но тоже можно, предварительно STRTRAN-ом заменив ";;" на "; ;"). |
Re: импорт из txt | |
---|---|
vacikoff Сообщений: 9 Дата регистрации: 29.03.2020 |
Спасибо за подсказку! Как мне APPEND импортировать все строчки кроме строк начинающихся с # ? |
Re: импорт из txt | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Добавить в APPEND FROM условие: FOR LEFT(myfield,1)#[#]
|
Re: импорт из txt | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Молча.
------------------ Лень - это неосознанная мудрость. |
Re: импорт из txt | |
---|---|
vacikoff Сообщений: 9 Дата регистрации: 29.03.2020 |
Исправлено 2 раз(а). Последнее : vacikoff, 06.04.20 14:24 |
Re: импорт из txt | |
---|---|
akvvohinc Автор Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Выдаст ошибку несовпадения типов, если поле не символьное.
Правильнее было бы не показывать нам пример импортируемого файла, а описать его спецификацию. Почему у вас получилось 7 слов, а не 6, как в примере? Возможно, перед первым '#' в вашем файле находится один или несколько пробелов. Ну и, скорее всего, такой способ дает одну лишнюю пустую запись, так как последнее слово будет начинаться с символов новой строки (их может отсечь LTRIM). То есть такой способ не слишком надёжен. Например, я, глядя на ваш пример, сказал бы, что вам нужно не 6-е или 7-е слово, а последнее. Да и на вариант с GetWordNum() я бы не стал полагаться, если нет гарантии, что символ '#' никогда не встретится в данных. Но вы об этом ничего не сообщаете. Если же этот символ может быть только в шапке, но количество строк шапки произвольно, то я бы нашел последнее вхождение '#' в строку и записал в файл всё, что идет после него:
И то так просто можно сделать только в том случае, если шапка обязательно заканчивается строкой с символом '#', за которым ничего не идет, кроме символов новой строки. -------- Итого я голосую за самый простой вариант создания файла MyFile.tmp - построчное чтение исходного файла, анализ строки, запись строки, если нужно. Вариант быстрый и будет работать с файлом любого допустимого размера (в строку же можно прочитать не любой файл, причем, заранее нельзя предсказать, хватит или не хватит памяти для этой операции). Исправлено 1 раз(а). Последнее : akvvohinc, 08.04.20 04:57 |
Re: импорт из txt | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Надо быть в изрядном подпитии, чтобы закачивать текст в несимвольное поле. |
Re: импорт из txt | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
В военное время косинус может достигать и трех. (с) |
Re: импорт из txt | |
---|---|
akvvohinc Автор Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
А кто сказал, что в не символьное поле закачивается текст? Я вижу, что импортируемые строки начинаются как раз с чисел. Но даже если бы это было не так в этом конкретном случае, то такое решение - не решение, если зависит от того, какие данные вводятся. Исправлено 1 раз(а). Последнее : akvvohinc, 08.04.20 17:53 |
Re: импорт из txt | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Универсальность не является самоцелью. Во всём нужен здравый смысл и целесообразность.
Мне приходится довольно много обрабатывать различных "входных данных", поступающих из сторонних источников. Если б мне пришлось обрабатывать такого рода текст. Очевидно, что в тексте есть заголовок с важными "входящими сведениями". Возможно, что в данном частном случае эти данные не имеют значения (не верю! ), но считать и обработать их - почему бы и нет? Поэтому первое поле я бы сделал символьным с размером по наибольшему заполнению строки, начинающейся с символа # и плюс ещё символов 10 "про запас". Остальные поля вполне могут быть и цифровыми, если там действительно всегда будут цифры (без спецсимволов). Поэтому мной и было предложено очевидное и предельно прозрачное решение (даже человек, никогда не занимающийся программированием, догадается,"как это работает"). Вообще говоря, если вижу простые и прозрачные решения, то готов принести в жертву "универсальность". Исправлено 3 раз(а). Последнее : Simple777, 08.04.20 18:30 |
Re: импорт из txt | |
---|---|
akvvohinc Автор Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Значит, мы по-разному поняли задание - я его понял, как необходимость импортирования данных в существующую таблицу, структурой которой я "играть" не могу. Исправлено 1 раз(а). Последнее : akvvohinc, 08.04.20 18:59 |
Re: импорт из txt | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Для того и существует аналитическая часть, где уточняются нюансы. В любом случае экспортно-импортные операции дают свободу действий разработчику. Совсем не обязательно напрямую заполнять рабочие таблицы. Я нередко делаю достаточно подробную диагностику с выдачей протокола выявленных аномалий и косяков. И только после подтверждения пользователем данные заносятся в рабочие таблицы.
Исправлено 1 раз(а). Последнее : Simple777, 08.04.20 19:12 |
Re: импорт из txt | |
---|---|
akvvohinc Автор Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Тогда эта тема вообще не представляет интереса - автору вполне хватило бы ответа, что построчно читать текстовый файл надо с помощью FGETS(), а не FREAD(), а в остальном у него полная свобода действий. |
Re: импорт из txt | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
А потом внезапно оказывается что в одном из этих "заголовочных полей" может встретиться символ ; который для остальной части файла является разделителем полей, и соответственно APPEND FROM и строки заголовка "порежет" на части Для более-менее "произвольных" форматов файлов (включая "заголовки", или несколько таблиц разделённых, к примеру, пустой строкой или спец строкой типа кучи минусов) всё же имеет смысл писать парсер используя FGETS, или, если лимит на размер файлов имеется и он небольшой то FILETOSTR. Далее уже при помощи антикварных AT/SUBSTR или более свежих ALINES, GETWORDNUM (он, кстати, раньше существовал в foxtools.fll под чуть другим именем - не удивлюсь если и в FPD-ных plb имеются его аналоги) разбирать строки на части и вручную же конвертировать в нужный вид числа/даты. ------------------ WBR, Igor |
Re: импорт из txt | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Конечно есть. ------------------ Лень - это неосознанная мудрость. |
Re: импорт из txt | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Команда APPEND FROM TYPE вообще довольно "рискованная" в общем случае.
|
© 2000-2024 Fox Club  |