首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

C 語言實現文本數據批量導入 MySQL (基於 C API)

     編輯:MySQL 綜合教學

C 語言操作 MySQL C API 批量導入文本數據實戰

本文展示如何使用 C 語言配合 MySQL C API,將格式化文本文件中的數據逐行解析並批量插入資料庫。核心思路:fgets 讀取行 → strtok 分割字段 → sprintf 構建 SQL → mysql_real_query 執行插入。

核心代碼實現

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

MYSQL mysql;

/* 封裝插入邏輯 */
void insert(char *a, char *b, char *c) {
    int t;
    char query[400];
    memset(query, 0, 400);
    /* 根據實際表結構調整 SQL */
    sprintf(query, "INSERT INTO EnglishWord4(Words, Translate, Num) VALUES('%s', '%s', '%s')", a, b, c);
    printf("正在執行: %s\n", query);
    t = mysql_real_query(&mysql, query, (unsigned int)strlen(query));
    if (t) {
        printf("插入異常: %s\n", mysql_error(&mysql));
    } else {
        printf("添加成功\n");
    }
}

int main() {
    FILE *fp;
    char buff[300];
    fp = fopen("englishword4.txt", "r");
    if (fp == NULL) {
        printf("Fail to open\n");
        exit(1);
    }

    mysql_init(&mysql);
    /* 連接資料庫:主機、用戶、密碼、數據庫、端口、Socket、標誌 */
    if (!mysql_real_connect(&mysql, "localhost", "root", NULL, "English", 0, NULL, 0)) {
        printf("Error connecting to database: %s\n", mysql_error(&mysql));
        return 1;
    } else {
        printf("Connected...\n");
    }

    char *p;
    char a[20], b[200], c[10];
    int i, length;

    while (fgets(buff, 300, fp) != NULL) {
        /* 去除換行符 */
        if (buff[strlen(buff)-1] == '\n') buff[strlen(buff)] = '\0';

        /* 假設文件格式:單字#音標#解釋#編號 */
        strcpy(a, strtok(buff, "#"));
        i = 0;
        while ((p = strtok(NULL, "#"))) {
            if (i == 1) strcpy(b, p);  /* 解釋 */
            if (i == 2) strcpy(c, p);  /* 編號 */
            i++;
        }
        /* 處理編號末尾可能的換行/回車 */
        length = strlen(c);
        if (length >= 2) c[length-2] = '\0';

        insert(a, b, c);
        /* 清空緩衝區供下一輪使用 */
        bzero(a, sizeof(a));
        bzero(b, sizeof(b));
        bzero(c, sizeof(c));
    }

    mysql_close(&mysql);
    fclose(fp);
    return 0;
}

測試數據格式示例

文本文件 englishword4.txt 每行格式:

a#[ei]#art. 一;任一;每一#1
able#['eibl]#adj. 能#1
about#[ə'baut]#prep. 關於#1
...

執行結果驗證

程序運行後,可通過 MySQL 客戶端查詢表 EnglishWord4 確認數據已成功導入。

查詢結果
建表結構
程序執行過程
插入後數據

關鍵點總結

  • 務必初始化 MYSQL 結構體並檢查連接返回值。
  • 字符串拼接 SQL 時注意防止注入(生產環境建議使用預處理語句 mysql_stmt_prepare)。
  • 文件讀取循環中需正確處理緩衝區清理與分隔符邊界情況。
  • 錯誤處理:檢查 mysql_real_query 返回值,利用 mysql_error 獲取詳細信息。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved