Hallo!
Ich hätte da mal ein kleines (?) Problem!
Wie kann ich denn eine .txt Datei in !2! verschiedene Tabellen einer Datenbank schreiben?
Zur Information: Ich bin Anfänger und habe noch nicht so die absolute Ahnung. Also mal zu meinem Problem: Ich habe eine .txt Datei, die ich auslesen und in 2 verschiedene tables einer MySQL Datenbank schreiben muss. Hier mal mein Code (es ist noch nicht viel, da ich ja an dem Problem hänge):
Code:
/*Includes*/
#include <stdio.h>
#include <mysql.h>
#include <stdlib.h>
/*Prototypen*/
int connect_DB();
void close_conect(MYSQL*);
int open_stream();
void import_data();
/*Globale Variablen*/
extern int errno;
int main(int argc, char *argv[]) {
connect_DB();
return 0;
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*Diese Funktion stellt eine Verbindung zur Datenbank (Alarmmanager) her*/
int connect_DB() {
/*Variablen*/
MYSQL *conn; /*Fuer Verbindung benoetigt*/
/*Verbindung zu MySQL*/
conn = mysql_init(NULL);
if (mysql_real_connect( conn,
"2.9.153.47",
"root",
"root",
"alarmmanager",
3306,
NULL,
0) == NULL) {
fprintf(stderr, "Fehler mysql_real_connect(): "
"%u (%s)\n", mysql_errno(conn), mysql_error(conn));
exit(EXIT_FAILURE);
} else {
printf("Erfolgreich mit dem MySQL-Server verbunden! \n\n");
}
/*Falls eine Unicode-Ausgabe erwuenscht ist bitte einkommentieren*/
/*mysql_query(conn, "SET NAMES 'utf8'");*/
/*Aufruf der Funktion, um die Datei in die DB zu schreiben*/
open_stream();
/*Verbindung zur Datenbank schliessen*/
close_conect(conn);
return 0;
}
/*Mit Hilfe dieser Funktion wird die Verbindung zur Datenbank wieder geschlossen
und der belegte Speicher wird frei gegeben*/
void close_conect(MYSQL *mysql) {
mysql_close(mysql);
printf("\nVerbindung wieder geschlossen! \n");
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*Diese Funktion oeffnet die Datei 200X_XX_XX_XX_WLAN_DB.txt*/
int open_stream() {
/*Variablen*/
FILE *datei;
datei = fopen("/home/tracer/trace_history/060503/filter/2006_05_03_23_WLAN_DB.txt", "rt");
if (datei == NULL) {
perror("Fehler beim oeffnen der Datei '2006_05_03_23_WLAN_DB.txt' \n");
exit(EXIT_FAILURE);
} else {
printf("Datei wurde erfolgreich zum Lesen geoeffnet \n");
}
/*Aufruf der Funktion*/
import_data();
/*Datei wieder schliessen*/
fclose(datei);
printf("Datei geschlossen\n");
return EXIT_SUCCESS;
}
/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
/*In dieser Funktion wird das Textfile ausgelesen und der Inhalt in die
Datenbank importiert*/
void import_data() {
const char *sql = "LOAD DATA LOCAL INFILE '/home/tracer/trace_history/060503/filter/2006_05_03_23_WLAN_DB.txt' \
FIELDS TERMINATED BY ',' \
LINES TERMINATED BY '\n' \
INTO TABLE tblamwlan (RDID, RohDatenID, AlarmText, Land, Netz, Requests, Response, Difference \
Percent, BearbeitungsStatus, MCC, MNC)";
printf("Eingetragen \n");
}
Bin ich überhaupt auf der richtigen Spur, oder schieße ich Meilenweit am Ziel vorbei? An diesem Prob. hänge ich nun seit einigen Tagen. Das ganze wird unter Linux geschrieben und kompiliert einwandfrei. Alle Ausgaben mit printf funktionieren. Es gibt keine Fehlermeldungen und das Programm macht alles was es machen soll. Nur werden keine Daten aus dem .txt File ausgelesen und in die Tabelle eingetragen. Was mache ich falsch? Hat jemand eine Lösung oder einen Ansatz für mich? Ich bin für jede Hilfe dankbar!