Реляционная база данных из файлов 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 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.
Подход:
- Откройте файл CSV с помощью указателя файла в режиме добавления, который поместит указатель в конец файла.
- Принимайте входные данные от пользователя во временных переменных.
- Используйте fprintf () и разделяйте переменные в соответствии с их порядком и запятой.
- Закройте файл.
Пример:
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, данные хранятся в табличном формате.
- Легко организовать данные с помощью прямого взаимодействия с пользователем или с помощью программы.
- Широко применяется в финансовых отраслях для хранения и передачи данных через Интернет.
- Легко конвертируется в другие файлы и форматы.
- Его можно импортировать или экспортировать на различные платформы и интерфейсы.