Як використовувати CSV файл
Формат визначений як текстовий, порядковий, зі збереженням запису на рядок. Роздільник рядків - стандартний роздільник розриву рядків.
Однією записи даних відповідає один рядок, значення окремих колонок відокремлюються одна від одної комою або крапкою з комою. Далі в статті використовується роздільник кома. Значення колонок, що містять зарезервовані символи (кома) обрамляются подвійними лапками ( "); якщо в значенні зустрічаються лапки - вони представляються в файлі у вигляді двох лапок поспіль.
Для імпорту такого формату на мові MUMPS є два варіанти - використання стандартного підмножини мови для парсинга рядки і використання розширених функцій, що спрощують розбір рядка заданої за певним правилом. Найбільш простим варіантом у багатьох системах програмування підтримують регулярні вирази є використання регекспов.
Для демонстрації можливостей імпорту використовуємо тестову програму, яка виконує читання файлу і для кожного рядка викликає обробку рядка. В обробці рядка викликається парсинг рядка на окремі значення і їх показ на екрані.
Прогресивне читання текстового файлу з передачею кожного рядка підпрограми:
Показ рядки до розбору і показ окремих значень після парсинга:
Парсинг окремого рядка з поверненням набору колонок у вигляді списку:
Тут використовується три регулярних вирази - resplit для розбиття на окремі значення, reremove для видалення форматуючих послідовностей і заміна подвоєних лапок на одинарні.
При імпорті CSV файлу з прикладу утиліта виводить на екран діагностику з розбором рядків і значень:
Утиліта справляється з досить складним форматуванням даних, розпізнаючи випадки зайвих прогалин і лапок.
Для експорту в прикладі використовується особливість системної функції $ ZQUOTE () подвоювати лапки якщо вони є в рядку і додавати обрамляють лапки для значення не є числом. Числа використовуються як є, без декорування, для чисел з дробовою частиною використовується роздільник точка.
Формально кажучи, стандарт CSV розрізняє роздільник форматування в залежності від локалі системи - в локалях, де десятковим роздільником є точка, в якості табличного роздільник використовується кома; в локалях, де десятковим роздільником є кома, як табличного роздільник крапку з комою. У прикладі виводяться числа з десятковим роздільником точка, не використовуючи локаль системи. Тому як роздільник використовується кома, це найбільш поширений випадок.
Для експорту даних рутина прикладу містить функцію їх створення:
І сам експорт складається з функції порядкового виводу і функції виведення одного рядка:
Наведений приклад є лише демонстраційним і показує можливості системи MiniM по роботі з поширеними форматами файлів даних. У прикладі використовується спрощене уявлення рядки даних у вигляді списку. У реальній системі працює в експлуатації уявлення даних може відрізнятися.