小程序实现sql插入语句转换成Laravel迁移语句
sql的插入语句长这样:
INSERT INTO `media` (`MediaID`, `type`, `filename`, `title`) VALUES (1, 'word', 'word1.mp4', 'Word发展历史'), (2, 'word', 'word2.mp4', 'Word基本界面'), (3, 'word', 'word3.mp4', 'Word新建'), (4, 'word', 'word4.mp4', 'Word保存');
我需要的Laravel的迁移插入语句长这样:
DB::table('media')->insert([ [ 'MediaID' => 1, 'type' => 'word', 'filename' => 'word1.mp4', 'title'=> 'Word发展历史' ], [ 'MediaID' => 2, 'type' => 'word', 'filename' => 'word2.mp4', 'title'=> 'Word基本界面' ], [ 'MediaID' => 3, 'type' => 'word', 'filename' => 'word3.mp4', 'title'=> 'Word新建' ], [ 'MediaID' => 4, 'type' => 'word', 'filename' => 'word4.mp4', ]); 有限状态自动机,随便写了个小程序,应付自己临时的需求。 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #define INSERT 0 #define TABLE 1 #define G_PRO 2 #define PRO 3 #define G_IN 4 #define IN 5 #define IN2 6 using namespace std; char pro[100][300];//属性 int pcnt; bool ck(char wd[1000]){//不为NULL,"" for(int i=0;wd[i];i++){ if(wd[i]=='\''&&i&&wd[i-1]=='\'') return 0; if(wd[i]=='N') return 0; } return 1; } void solve(){ char c,wd[1000]=""; int f=INSERT,i,j; while(1){ c=getchar(); if(c==EOF)break; if(f==INSERT){ if(c=='`'){ f=TABLE; i=0; } if(c=='(') f=G_PRO; }else if(f==TABLE){ if(c=='`'){ wd[i]='\0'; i=0; f=INSERT; printf("DB::table('%s')->insert([\n",wd); } else wd[i++]=c; }else if(f==G_PRO){//属性列表 if(c=='`'){ f=PRO; i=0; } else if(c==')') f=G_IN; }else if(f==PRO){//属性 if(c=='`'){ wd[i]='\0';//输出前截断后面的。 sprintf(pro[pcnt++],"%s",wd); f=G_PRO; }else wd[i++]=c; }else if(f==G_IN){//等待一个插入 if(c=='('){ j=i=0;//j是属性下标 f=IN; } else if(c=='I') f=INSERT; }else if(f==IN){ if(c==','){ wd[i]='\0'; if(!j) printf("[\n"); if(ck(wd)) printf("\t'%s' => %s,\n",pro[j],wd); j++; i=0;//读过下一个值 }else if(c=='\''){ wd[i++]=c; f=IN2;//读入字符串 }else if(c==')'){ wd[i]='\0'; if(ck(wd)) printf("\t'%s'=> %s\n",pro[j],wd); puts("],"); i=j=0; f=G_IN; }else wd[i++]=c; }else if(f==IN2){ if(c=='\'') f=IN; wd[i++]=c; } } printf("]);\n"); } int main() { solve(); return 0; }
┆凉┆暖┆降┆等┆幸┆我┆我┆里┆将┆ ┆可┆有┆谦┆戮┆那┆ ┆大┆始┆ ┆然┆
┆薄┆一┆临┆你┆的┆还┆没┆ ┆来┆ ┆是┆来┆逊┆没┆些┆ ┆雁┆终┆ ┆而┆
┆ ┆暖┆ ┆如┆地┆站┆有┆ ┆也┆ ┆我┆ ┆的┆有┆精┆ ┆也┆没┆ ┆你┆
┆ ┆这┆ ┆试┆方┆在┆逃┆ ┆会┆ ┆在┆ ┆清┆来┆准┆ ┆没┆有┆ ┆没┆
┆ ┆生┆ ┆探┆ ┆最┆避┆ ┆在┆ ┆这┆ ┆晨┆ ┆的┆ ┆有┆来┆ ┆有┆
┆ ┆之┆ ┆般┆ ┆不┆ ┆ ┆这┆ ┆里┆ ┆没┆ ┆杀┆ ┆来┆ ┆ ┆来┆