#include #include #include EXEC SQL INCLUDE SQLCA; void sql_error(void) { char errmsg[101]; int errsz, bufsz=100; sqlglm(errmsg, &bufsz, &errsz); errmsg[errsz]=0; printf("Oracle error -- %s", errmsg); exit(EXIT_FAILURE); } int main(int argc, char *argv[]) { char name[50], pass[50], cell[50], temp[1000], sqlop[1000]=""; FILE *data; struct termios t; EXEC SQL WHENEVER SQLERROR DO sql_error(); if(3!=argc) { printf("Usage: %s file table\n", argv[0]); exit(EXIT_FAILURE); } if(NULL==(data=fopen(argv[1], "r"))) { printf("Could not open %s for reading.\n", argv[1]); exit(EXIT_FAILURE); } printf("Username: "); scanf(" %s", name); printf("Password: "); tcgetattr(0, &t); t.c_lflag&=~ECHO; tcsetattr(0, TCSANOW, &t); scanf(" %s", pass); printf("\n"); EXEC SQL CONNECT :name IDENTIFIED BY :pass USING :"cse2316"; while(EOF!=fscanf(data, " %[^\t\n]", cell)) { strcpy(temp, sqlop); sprintf(sqlop, "%s, '%s'", temp, cell); if(getc(data)!='\t') { strcpy(temp, sqlop+2); sprintf(sqlop, "INSERT INTO %s VALUES(%s)", argv[2], temp); EXEC SQL EXECUTE IMMEDIATE :sqlop; sqlop[0]=0; } } EXEC SQL COMMIT WORK RELEASE; printf("Table loaded successfully.\n"); }