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' => ,
'type' => 'word',
'filename' => 'word1.mp4',
'title'=> 'Word发展历史'
],
[
'MediaID' => ,
'type' => 'word',
'filename' => 'word2.mp4',
'title'=> 'Word基本界面'
],
[
'MediaID' => ,
'type' => 'word',
'filename' => 'word3.mp4',
'title'=> 'Word新建'
],
[
'MediaID' => ,
'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[][];//属性
int pcnt;
bool ck(char wd[]){//不为NULL,""
for(int i=;wd[i];i++){
if(wd[i]=='\''&&i&&wd[i-]=='\'')
return ;
if(wd[i]=='N')
return ;
}
return ;
}
void solve(){
char c,wd[]="";
int f=INSERT,i,j;
while(){
c=getchar();
if(c==EOF)break;
if(f==INSERT){
if(c=='`'){
f=TABLE;
i=;
}
if(c=='(')
f=G_PRO;
}else if(f==TABLE){
if(c=='`'){
wd[i]='\0';
i=;
f=INSERT;
printf("DB::table('%s')->insert([\n",wd);
}
else
wd[i++]=c;
}else if(f==G_PRO){//属性列表
if(c=='`'){
f=PRO;
i=;
}
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=;//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=;//读过下一个值
}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=;
f=G_IN;
}else
wd[i++]=c;
}else if(f==IN2){
if(c=='\'')
f=IN;
wd[i++]=c;
}
}
printf("]);\n");
}
int main() {
solve();
return ;
}

  

小程序实现sql插入语句转换成Laravel迁移语句的更多相关文章

  1. SQL中DateTime转换成Varchar样式

    SQL中DateTime转换成Varchar样式语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect ...

  2. 【HIVE】sql语句转换成mapreduce

    1.hive是什么? 2.MapReduce框架实现SQL基本操作的原理是什么? 3.Hive怎样实现SQL的词法和语法解析? 连接:http://www.aboutyun.com/thread-20 ...

  3. 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果

    去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...

  4. [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...

  5. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]

        小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 ...

  6. 分享一个小工具:Excel表高速转换成JSON字符串

    在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...

  7. 小技巧,把execl.exe转换成dll

    小技巧 把execl.exe转换成dll1.把excel.exe复制到CProgram FilesMicrosoft Visual Studio .NET 2003SDKv1.1Bin夹中,和TlbI ...

  8. sql hibernate查询转换成实体或对应的VO Transformers

    sql查询转换成实体或对应的VO Transformers //addScalar("id") 默认查询出来的id是全部大写的(sql起别名也无效,所以使用.addScalar(& ...

  9. uniapp微信小程序canvas绘图插入网络图片不显示

    网络图片缓存 在uni中wx可以用uni代替 无区别: 先把要插入的网络图片缓存(getImageInfo); let context = uni.createCanvasContext('first ...

随机推荐

  1. SQL Server下载安装

    参考下载http://www.orsoon.com/Soft/148976.html 安装教程 解压压缩文件,得到安装程序,运行安装程序(如下图) 2..点击左侧的"安装",选择& ...

  2. JavaScript语言精粹(读书笔记)

    第一章 精华 1,JavaScript的函数(主要)基于词法作用域(lexical scoping)的顶级对象.强类型语言允许编译器在编译时检测错误,但弱类型很自由,无需建立复杂的类层次,不用做强制造 ...

  3. 欢迎进入MyKTV点歌系统展示

    一个项目,一分收获:一个项目,一些资源.Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源. 一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧! 1.MyKTV前台功能: ...

  4. webForm(三)——三级联动

    三级联动 首先附图一张,初步认识一下什么是三级联动:                           注:选第一个后面两个变,选第二个,最后一个改变. 其次,做三级联动需要注意的方面:①DropD ...

  5. Oracle 12.1.0.2 New Feature翻译学习【In-Memory column store内存列存储】【原创】

    翻译没有追求信达雅,不是为了学英语翻译,是为了快速了解新特性,如有语义理解错误可以指正.欢迎加微信12735770或QQ12735770探讨oracle技术问题:) In-Memory Column ...

  6. C++常见问题: 字符串分割函数 split

    C++标准库里面没有字符分割函数split ,这可太不方便了,我已经遇到>3次如何对字符串快速分割这个问题了.列几个常用方法以备不时之需. 方法一: 利用STL自己实现split 函数(常用,简 ...

  7. Linux下监控服务器状态命令——top

    ----------------------------------工作中常用的命令,来判断服务器状态是否正常------------------------------------- top命令作用 ...

  8. 网络抓包工具-Wireshark学习资料

    wireshark一个非常牛逼的网络抓包工具.转载一系列博文 一站式学习Wireshark(一):Wireshark基本用法 一站式学习Wireshark(二):应用Wireshark观察基本网络协议 ...

  9. DOM document object model learn

    DOM对W3C DOM而言,HTML文档中任何一样东西都是一个节点,而且节点之间是有层次的.如<p>I am a JavaScript hacker.</p>有两个节点,一个是 ...

  10. MMORPG大型游戏设计与开发(服务器 AI 概述)

    游戏世界中我们拥有许多对象,常见的就是角色自身以及怪物和NPC,我们可以见到怪物和NPC拥有许多的行为,比如说怪物常常见到敌对的玩家就会攻击一样,又如一些NPC来游戏世界中走来走去,又有些怪物和NPC ...