当前位置:首页 > 行业动态 > 正文

如何用C语言实现逐行读取文件并存入数据库?

在C语言中,可以使用标准的文件I/O函数来读取文件的每一行。以下是一个示例代码,演示了如何打开一个文件并逐行读取其内容:,,“ c,#include,#include,,int main() {, FILE *file = fopen("database.txt", "r");, if (file == NULL) {, perror("Error opening file");, return EXIT_FAILURE;, },, char *line = NULL;, size_t len = 0;, ssize_t read;,, while ((read = getline(&line, &len, file)) != -1) {, printf("%s", line);, },, free(line);, fclose(file);, return 0;,},` ,,这个程序首先尝试打开名为"database.txt"的文件进行读取。如果文件成功打开,它会使用getline`函数逐行读取文件内容,直到文件末尾。每读取一行,它就会打印该行的内容。程序释放分配的内存并关闭文件。

在C语言中,读取文件的每一行并存储到数据库中是一个常见的任务,以下是一个详细的步骤说明和示例代码,展示如何完成这个任务。

包含必要的头文件

我们需要包含一些必要的头文件,以便能够使用标准I/O函数、字符串操作函数以及数据库连接函数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mysql/mysql.h"

配置数据库连接参数

定义一个结构体来保存数据库连接的参数,包括服务器地址、用户名、密码、数据库名等。

typedef struct {
    char *host;
    char *user;
    char *pass;
    char *dbname;
    unsigned int port;
} DBConfig;
DBConfig db_config = {
    "localhost",
    "root",
    "password",
    "testdb",
    3306
};

初始化数据库连接

编写一个函数来初始化数据库连接,并检查连接是否成功。

MYSQL *init_db() {
    MYSQL *conn = mysql_init(NULL);
    if (conn == NULL) {
        fprintf(stderr, "%s
", mysql_error(conn));
        exit(EXIT_FAILURE);
    }
    if (mysql_real_connect(conn, db_config.host, db_config.user, db_config.pass, db_config.dbname, db_config.port, NULL, 0) == NULL) {
        fprintf(stderr, "%s
", mysql_error(conn));
        mysql_close(conn);
        exit(EXIT_FAILURE);
    }
    return conn;
}

读取文件每一行并插入数据库

编写一个函数来读取文件的每一行,并将其内容插入到数据库中,假设我们有一个名为data的表,包含一个名为content的列。

void read_file_and_insert(const char *filename, MYSQL *conn) {
    FILE *file = fopen(filename, "r");
    if (file == NULL) {
        perror("Failed to open file");
        exit(EXIT_FAILURE);
    }
    char line[1024];
    while (fgets(line, sizeof(line), file)) {
        // 去掉换行符
        size_t len = strlen(line);
        if (len > 0 && line[len 1] == '
') {
            line[len 1] = '
0