前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序实现sql插入语句转换成Laravel迁移语句

小程序实现sql插入语句转换成Laravel迁移语句

作者头像
饶文津
发布2020-06-02 11:06:21
4490
发布2020-06-02 11:06:21
举报
文章被收录于专栏:饶文津的专栏饶文津的专栏

sql的插入语句长这样:

代码语言:javascript
复制
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的迁移插入语句长这样:

代码语言:javascript
复制
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;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档