Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //================================================================================================================================
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++LOAD+
- //================================================================================================================================
- if(argc==2 && strcmp(argv[1],"load")==0)
- printf("Enter file name!\n");
- if(argc==1){
- printf("\n+------------------------------------------------------+\n\t\tPOSGRESQL DATABASE FROM FILE\n+------------------------------------------------------+\n");
- printf(">show option list:\n\t~$./dbo\n");
- printf(">load table from file_name file:\n\t~$./dbo load file_name\n");
- printf(">show tables in html page\n\t~$./dbo table_name1 table_name2 > file.html\n\n");
- printf("+------------------------------------------------------+\n");
- }
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- else{
- if(argc>2 && strcmp(argv[1],"load")==0){
- int filesCounter=0,i=0,j=0,k=0;
- char fileName[300]={'\0'};
- char columnNamesLine[300]={'\0'};
- for(filesCounter=2;filesCounter<argc;filesCounter++){
- for(i=0;i<300;i++)
- fileName[i]='\0';
- strcat(fileName,argv[filesCounter]);
- j=0;
- while(fileName[j]!='.' && fileName!='\0')
- j++;
- char tableName[j];
- for(i=0;i<j;i++)tableName[i]='\0';
- for(i=0;i<j;i++)
- tableName[i]=fileName[i];
- FILE *plik = fopen(fileName, "r");
- if (plik == NULL){
- printf("\nCannot open \"%s\" file.\n",fileName);
- exit(-1); // trzeba dołączyć <stdlib.h>
- }
- else{
- system("clear");
- printf("\t\tPOSGRESQL DATABASE FROM FILE\n--------------------------------------------------------\n");
- printf("File \"%s\" opened succesfully.",fileName);
- printf("\n--------------------------------------------------------\n");
- fgets(columnNamesLine,300,plik);
- }
- int columnNamesLineLength= arlen(columnNamesLine);
- int columnsCounter=1;
- for(i=0;i<columnNamesLineLength;i++)
- if(columnNamesLine[i]==';')
- columnsCounter++;
- char columnNames[columnsCounter][50];
- for(i=0;i<columnsCounter;i++)
- for(j=0;j<50;j++)
- columnNames[i][j]='\0';
- j=0;
- k=0;
- for(i=0;i<(columnNamesLineLength-1);i++){
- if(columnNamesLine[i]!=';'){
- columnNames[j][k]=columnNamesLine[i];
- k++;
- }
- else{
- k=0;
- j++;
- }
- }
- char tableId[30]={'\0'};
- strcat(tableId,"id_");
- strcat(tableId,tableName);
- printf("Tablename: %s \n",tableName);
- printf("Columns[%d]:\n",columnsCounter+1);
- printf("1. %s [PRIMARY KEY]\n",tableId);
- for(i=0;i<columnsCounter;i++){
- printf("%d. %s\n",i+2,columnNames[i]);
- }
- //---------------------------------------------------------------------------
- printf("\n--------------------------------------------------------\n");
- char logData[150]="host=localhost port=5432 dbname=";
- char password[50]={'\0'};
- char dbname[50]={'\0'};
- char user[50]={'\0'};
- printf("DBname: ");
- scanf("%s",&dbname);
- strcat(logData,dbname);
- char createdb[30]={'\0'};
- strcat(createdb,"createdb ");
- strcat(createdb,dbname);
- strcat(createdb," 2>/dev/null");
- system(createdb);
- printf("User: ");
- scanf("%s",&user);
- strcat(logData," user=");
- strcat(logData,user);
- printf("Password: ");
- system("stty -echo");
- scanf("%s",&password);
- system("stty echo");
- strcat(logData," password=");
- strcat(logData,password);
- //-----------------------------------------
- system("clear");
- PGconn *conn = PQconnectdb(logData);
- if(PQstatus(conn) == CONNECTION_OK) {
- printf(">Tables loaded succesfully!\n");
- //----------------------------------------DROP
- char dropTable[200]={'\0'};
- strcat(dropTable,"DROP TABLE ");
- strcat(dropTable, tableName);
- strcat(dropTable, ";");
- PQexec(conn, dropTable);
- //----------------------------------------CREATE
- char createTable[200]={'\0'};
- strcat(createTable,"CREATE TABLE ");
- strcat(createTable, tableName);
- strcat(createTable, "(");
- strcat(createTable, tableId);
- strcat(createTable," SERIAL PRIMARY KEY ");
- for(i=0;i<columnsCounter;i++){
- strcat(createTable,", ");
- strcat(createTable,columnNames[i]);
- strcat(createTable," VARCHAR(20)");
- }
- strcat(createTable,");");
- PQexec(conn, createTable);
- //----------------------------------------INSERT FrOM FILE
- char valuesLine[500]={'\0'};
- char values[columnsCounter][50];
- int valuesLineLength=0;
- int valueLength=0;
- char insert[500]={'\0'};
- char alterTable[500]={'\0'};
- char numb[100]={'\0'};
- int wtf=0;
- while(feof(plik)!=1){
- for(i=0;i<columnsCounter;i++)
- for(j=0;j<50;j++)
- values[i][j]='\0';
- for(i=0;i<500;i++)
- valuesLine[i]='\0';
- fgets(valuesLine,500,plik);
- valuesLineLength=arlen(valuesLine);
- j=0;
- k=0;
- for(i=0;i<(valuesLineLength-1);i++){
- if(valuesLine[i]!=';'){
- values[j][k]=valuesLine[i];
- k++;
- }
- else{
- k=0;
- j++;
- }
- }
- for(i=0;i<columnsCounter;i++){
- valueLength=arlen(values[i]);
- if(valueLength>=20){
- for(int alte=0;alte<500;alte++)
- alterTable[alte]='\0';
- strcat(alterTable,"ALTER TABLE ");
- strcat(alterTable,tableName);
- strcat(alterTable," ALTER COLUMN ");
- strcat(alterTable,columnNames[i]);
- strcat(alterTable," TYPE VARCHAR(");
- sprintf(numb, "%d", (valueLength+2));
- strcat(alterTable,numb);
- strcat(alterTable,");");
- PQexec(conn,alterTable);
- }
- }
- if((j+1)!=columnsCounter){
- for(i=(j+1);i<columnsCounter;i++)
- strcat(values[i],"NULL");
- }
- for(i=0;i<500;i++)
- insert[i]='\0';
- strcat(insert, "INSERT INTO ");
- strcat(insert,tableName);
- strcat(insert,"(");
- strcat(insert,columnNames[0]);
- for(wtf=1;wtf<columnsCounter;wtf++){
- strcat(insert,",");
- strcat(insert,columnNames[wtf]);
- }
- strcat(insert,") VALUES(");
- strcat(insert,"'");
- strcat(insert,values[0]);
- strcat(insert,"'");
- for(i=1;i<columnsCounter;i++){
- strcat(insert,",'");
- strcat(insert,values[i]);
- strcat(insert,"'");
- }
- strcat(insert,");");
- PQexec(conn, insert);
- }
- }
- else
- printf(">CONNECTION FAILED:\n %s\n", PQerrorMessage(conn));
- PQfinish(conn);
- }
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement