Реляционная база данных из файлов CSV на C
В программировании на C использование массивов и строк для хранения данных во время выполнения, которые являются энергозависимыми и получают память в ОЗУ. Но для постоянного хранения данных на жестком диске, которым можно манипулировать. Итак, идея состоит в том, чтобы использовать файл CSV для хранения и обработки данных. Не только CSV, но и другие файлы, такие как dat , txt и bin, также могут использоваться для обработки данных. Но CSV файл , как следует из названия (C ОММА S eparated V alues) хранит данные в виде таблицы , которая экономит много времени в создании идеальной структуры.
В реляционных базах данных данные хранятся в формате таблицы, поэтому с помощью файла CSV можно создать базу данных.
Ниже приведен пример файла CSV:
Чтобы узнать о концепции обработки файлов, обратитесь к статье «Базовая обработка файлов в C».
Создайте буфер массива символов (может называться строкой), который принимает все данные, присутствующие в файле, и с помощью указателя файла и fgets () данные могут быть извлечены. Используйте строку и столбец с двумя переменными, которые будут поддерживать уникальную идентификацию каждой записи.
Поскольку строка содержит запятую ',' для разделения значений, идея состоит в том, чтобы использовать функцию strtok () для разделения значений. Эта функция разбивает строку, используя разделитель, здесь мы используем ',' .
Извлечение данных :
Извлечение данных связано с открытием существующего файла CSV, извлечением и печатью всех данных на консоли.
Подход:
- Откройте файл CSV с помощью указателя файла.
- Извлеките данные всего файла в массив буферов символов.
- Теперь инициализируйте переменные строки и столбца значением 0 .
- Выведите данные через запятую и увеличьте значение переменной столбца.
- По достижении конца записи строки инициализируйте переменную столбца до 0 и увеличьте переменную строки.
- Повторяйте шаги 4 и 5, пока указатель не достигнет конца файла.
- Закройте файл.
Ниже представлена программа для того же:
C
| // C program for the above approach#include <conio.h>#include <stdio.h>#include <string.h> // Driver Codeintmain(){    // Substitute the full file path    // for the string file_path    FILE* fp =fopen("file_path","r");     if(!fp)        printf("Can't open file
");     else{        // Here we have taken size of        // array 1024 you can modify it        charbuffer[1024];         introw = 0;        intcolumn = 0;         while(fgets(buffer,                     1024, fp)) {            column = 0;            row++;             // To avoid printing of column            // names in file can be changed            // according to need            if(row == 1)                continue;             // Splitting the data            char* value =strtok(buffer,", ");             while(value) {                // Column 1                if(column == 0) {                    printf("Name :");                }                 // Column 2                if(column == 1) {                    printf("	Account No. :");                }                 // Column 3                if(column == 2) {                    printf("	Amount :");                }                 printf("%s", value);                value =strtok(NULL,", ");                column++;            }             printf("
");        }         // Close the file        fclose(fp);    }    return0;} | 
Добавление данных :
Добавление данных связано с открытием существующего файла CSV, вводом данных пользователем для данных, которые будут добавлены в файл, а затем добавлением этих данных в файл CSV.
Подход:
- Откройте файл CSV с помощью указателя файла в режиме добавления, который поместит указатель в конец файла.
- Принимайте входные данные от пользователя во временных переменных.
- Используйте fprintf () и разделяйте переменные в соответствии с их порядком и запятой.
- Закройте файл.
Пример:
C
| // C program for the above approach#include <conio.h>#include <stdio.h>#include <string.h> // Driver Codeintmain(){    // Substitute the file_path string    // with full path of CSV file    FILE* fp =fopen("file_path","a+");     charname[50];    intaccountno, amount;     if(!fp) {        // Error in file opening        printf("Can't open file
");        return0;    }     // Asking user input for the    // new record to be added    printf("
Enter Account Holder Name
");    scanf("%s", &name);    printf("
Enter Account Number
");    scanf("%d", &accountno);    printf("
Enter Available Amount
");    scanf("%d", &amount);     // Saving data in file    fprintf(fp,"%s, %d, %d
", name,            accountno, amount);     printf("
New Account added to record");     fclose(fp);    return0;} | 
Выход:
Преимущества файла CSV :
- В отличие от файлов .txt и .dat, данные хранятся в табличном формате.
- Легко организовать данные с помощью прямого взаимодействия с пользователем или с помощью программы.
- Широко применяется в финансовых отраслях для хранения и передачи данных через Интернет.
- Легко конвертируется в другие файлы и форматы.
- Его можно импортировать или экспортировать на различные платформы и интерфейсы.