小程序实现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' => ,
'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迁移语句的更多相关文章
- SQL中DateTime转换成Varchar样式
SQL中DateTime转换成Varchar样式语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect ...
- 【HIVE】sql语句转换成mapreduce
1.hive是什么? 2.MapReduce框架实现SQL基本操作的原理是什么? 3.Hive怎样实现SQL的词法和语法解析? 连接:http://www.aboutyun.com/thread-20 ...
- 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果
去年盛夏之时,曾写过“小tip: 使用CSS将图片转换成黑白”一文,本文的模式以及内容其实走得是类似路线.CSS3 → SVG → IE filter → canvas. 前段时间,iOS7不是瓜未熟 ...
- [转] 小tip: 使用CSS将图片转换成模糊(毛玻璃)效果 ---张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3804 去年盛夏之时, ...
- 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]
小tip: 使用CSS将图片转换成黑白(灰色.置灰) 这篇文章发布于 2012年08月19日,星期日,20:41,归类于 css相关, SVG相关. 阅读 159943 次, 今日 146 次 ...
- 分享一个小工具:Excel表高速转换成JSON字符串
在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...
- 小技巧,把execl.exe转换成dll
小技巧 把execl.exe转换成dll1.把excel.exe复制到CProgram FilesMicrosoft Visual Studio .NET 2003SDKv1.1Bin夹中,和TlbI ...
- sql hibernate查询转换成实体或对应的VO Transformers
sql查询转换成实体或对应的VO Transformers //addScalar("id") 默认查询出来的id是全部大写的(sql起别名也无效,所以使用.addScalar(& ...
- uniapp微信小程序canvas绘图插入网络图片不显示
网络图片缓存 在uni中wx可以用uni代替 无区别: 先把要插入的网络图片缓存(getImageInfo); let context = uni.createCanvasContext('first ...
随机推荐
- 数据集转换为Json
数据集转换为Json 第一步:新建一个类对象 通常我会写三个属性:状态.返回信息.数据集 第二步:新建一个JSON转换类 第三步:把类对象当做参数传入JSON转换类 ———————————————— ...
- UIToolBar
//UIToolBar 是导航控制器默认隐藏的工具条 //设置UIToolBar的隐藏状态 self.navigationController.toolbarHidden = NO; //如何找到UI ...
- iOS开发之功能模块--关于自定义TabBar条
只上项目中用到的代码: 1.实现重写TabBar的TabBarItem,然后在中间额外加一个按钮. #import <UIKit/UIKit.h> @interface BikeTabBa ...
- 在UTF-8中,一个汉字为什么需要三个字节?
UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序.有关Unicode为什么会出现就不叙述了,Unicode是针对所有计算机的使用者定义一套统一的编码规范, ...
- canvas 绘制圆角矩形
<!DOCTYPE HTML> <head> <meta charset = "utf-8"> <title>canvas</ ...
- 作业配置规范文档[MS SQL]
作业配置规范文档(MS SQL) 文档类型 MS SQL数据库作业配置规范文档 创建日期 2015-07-30 版本变化 V3.0 修改记录 修改人 修改日期 版本 修改描述 潇湘隐者 2015-08 ...
- PHP的错误机制总结
PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课. 特别说明:文章的PHP版本使用5.5.32 PHP的错误级别 首先需要了解php有哪些错误.截至到php5.5,一 ...
- linux shell for循环使用命令中读取到的值实例
#!/bin/bash file="states" for state in `cat $file` do echo "Visit beautiful $state&qu ...
- Nodejs以后台服务启动
1: 从网上查找 LINUX中我们可以使用这种简单的方式让node.js在后台运行: nohup node your_app.js & 经多次实验一直没有成功 2:使用 forever ...
- Spring MVC 访问静态资源
当我们不通过控制器,想直接访问网站上的静态资源时,由于DispatcherServlet的url-patten的通配符的限制,导致系统会认为你访问的是个url映射,这时需要配置一个东西就可以解决问题了 ...