Реляционная база данных из файлов CSV на C

Опубликовано: 16 Декабря, 2021

В программировании на C использование массивов и строк для хранения данных во время выполнения, которые являются энергозависимыми и получают память в ОЗУ. Но для постоянного хранения данных на жестком диске, которым можно манипулировать. Итак, идея состоит в том, чтобы использовать файл CSV для хранения и обработки данных. Не только CSV, но и другие файлы, такие как dat , txt и bin, также могут использоваться для обработки данных. Но CSV файл , как следует из названия (C ОММА S eparated V alues) хранит данные в виде таблицы , которая экономит много времени в создании идеальной структуры.

В реляционных базах данных данные хранятся в формате таблицы, поэтому с помощью файла CSV можно создать базу данных.

Ниже приведен пример файла CSV:

Чтобы узнать о концепции обработки файлов, обратитесь к статье «Базовая обработка файлов в C».

Создайте буфер массива символов (может называться строкой), который принимает все данные, присутствующие в файле, и с помощью указателя файла и fgets () данные могут быть извлечены. Используйте строку и столбец с двумя переменными, которые будут поддерживать уникальную идентификацию каждой записи.

Поскольку строка содержит запятую ',' для разделения значений, идея состоит в том, чтобы использовать функцию strtok () для разделения значений. Эта функция разбивает строку, используя разделитель, здесь мы используем ',' .

Извлечение данных :

Извлечение данных связано с открытием существующего файла CSV, извлечением и печатью всех данных на консоли.

Подход:

  1. Откройте файл CSV с помощью указателя файла.
  2. Извлеките данные всего файла в массив буферов символов.
  3. Теперь инициализируйте переменные строки и столбца значением 0 .
  4. Выведите данные через запятую и увеличьте значение переменной столбца.
  5. По достижении конца записи строки инициализируйте переменную столбца до 0 и увеличьте переменную строки.
  6. Повторяйте шаги 4 и 5, пока указатель не достигнет конца файла.
  7. Закройте файл.

Ниже представлена программа для того же:

C

// C program for the above approach
#include <conio.h>
#include <stdio.h>
#include <string.h>
// Driver Code
int main()
{
// 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
char buffer[1024];
int row = 0;
int column = 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);
}
return 0;
}

Добавление данных :

Добавление данных связано с открытием существующего файла CSV, вводом данных пользователем для данных, которые будут добавлены в файл, а затем добавлением этих данных в файл CSV.

Подход:

  1. Откройте файл CSV с помощью указателя файла в режиме добавления, который поместит указатель в конец файла.
  2. Принимайте входные данные от пользователя во временных переменных.
  3. Используйте fprintf () и разделяйте переменные в соответствии с их порядком и запятой.
  4. Закройте файл.

Пример:

C

// C program for the above approach
#include <conio.h>
#include <stdio.h>
#include <string.h>
// Driver Code
int main()
{
// Substitute the file_path string
// with full path of CSV file
FILE * fp = fopen ( "file_path" , "a+" );
char name[50];
int accountno, amount;
if (!fp) {
// Error in file opening
printf ( "Can't open file " );
return 0;
}
// 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);
return 0;
}

Выход:

Преимущества файла CSV :

  • В отличие от файлов .txt и .dat, данные хранятся в табличном формате.
  • Легко организовать данные с помощью прямого взаимодействия с пользователем или с помощью программы.
  • Широко применяется в финансовых отраслях для хранения и передачи данных через Интернет.
  • Легко конвертируется в другие файлы и форматы.
  • Его можно импортировать или экспортировать на различные платформы и интерфейсы.
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с Базовым курсом C для базового и продвинутого C.