我正在尝试从文本文件中获取数据并将其发送到SQL数据库并继续失败。有时数据到达数据库但我总是遇到分段错误。因此,我首先要集中精力从文本文件中获取正确的数据。
如何为我的SQL行将2行文本和1个日期分成3个单独的字符串?
我的SQL输出将是这个(因为这部分似乎有效..有时):
sprintf(SQLstring,"INSERT INTO TempHumid VALUES(unix_timestamp(now()),%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,'%s','%s',%s)",(temp / 10.0),(rh / 10.0),(light / 500.0),(ph * 10.0),(ligh\
tchk * 1.0),(tab1var1 * 10.0),(tab1var2 * 10.0),(tab1var3 * 10.0),(tab1var4 * 10.0),(tab1var5 * 10.0),(tab1var6 * 10.0),(tab1var7 * 10.0),(tab1var8 * 10.0),(tab1var9 * 10.0),(tab1var10 * 10.0),(text1),(text2),(date));
答案 0 :(得分:0)
在C语言中,您可以通过以下简单方式逐行阅读文本文件:
(' frow'应该足够大。)
char *sql;
char frow[1024];
FILE *fp;
fp = fopen( txt_file, "r" );
while ( fgets( frow, sizeof( frow ), fp ) != NULL ) {
puts( frow );
}
fclose( fp );
然后你就可以爆炸了#fr;'字符串与' strtok'以你需要的方式运作。
以下是一个示例,如何将所需数据插入MySQL数据库:
if ( asprintf( &sql, "INSERT INTO some_table (col1, col2, col3) VALUES ('%s', '%s', '%s')", a, b, c ) < 0 ) {
syslog( LOG_ERR, "asprintf error!" );
return (-1);
}
if ( sql_cmd( sql ) < 1 ) { // my function..
syslog( LOG_ERR, "MySQL error! %s", mysql_error( conn ) );
}
free( sql );
我希望这对你有所帮助。