渴望将informix sql移植到postgresql
sqlport的Python项目详细描述
##sql port-渴望将informix sql导入postgresql[--parse tree][--lex][--informix]
[infile[infile…]]
将SQL代码导入另一种方言。
positional arguments:
infile
optional arguments:
-h,--help显示此帮助消息并退出olders:""=
输入文件路径;"%"表示最后一个文件的输入文件路径
已删除扩展名;"%"表示最后一个文件的输入文件路径
已删除两个文件扩展名;…
--outdir outdir,-d outdir
输出基本目录
--替换,-r替换输入文件
--文件列表[文件],-f[文件]
re来自文件或stdin的ad文件列表
--quiet,-q不输出任何内容
--verbose,-v verbose output
--debug,-d调试输出
--parse tree,-t show parse tree
--lex,-l show lexer output
--informix,-i generate informix sql
````
formations
#### Data types
| Informix | Postgres |
| --------- | ------------------- |
| `lvarchar` | `varchar` |
| `varchar(x,y)` | `varchar(x)` |
| `byte` | `bytea` |
| `interval (1) year to month` | `interval` |
#### Literals
| Informix | Postgres |
| ---二、二、二、二、二、二、二、二、二、二、二、二、二、二、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四——————————————————————————————————————————————————————————————————————————限制1`
`选择唯一…` `选择不同…`
`选择…在temp x ` `创建临时表x as select…`
`从表(某些函数(a,b)的x,y,z)中选择x,y,z作为t(x,y,y,z)` `从某些函数(a,b)的x,y,z中选择x,y,z作为t(x,y,z)的t(x,y,z)选择x,y,z
` nvll(x,y)` ` `合并(x,y)`
/>`改变表添加约束主键…` ` `改变表添加主键…` `改变表添加主键…` ` ` `改变表添加主键…` `
`更新统计信息[用于表e]` | `ANALYZE [table_name]` |
#### Procedures
| Informix | Postgres |
| -------- | -------- |
| `CREATE PROCEDURE` | `CREATE FUNCTION` |
| `DROP PROCEDURE` | `DROP FUNCTION` |
| `RETURNING` | `RETURNS` |
| no return value | `RETURNS void` |
| `DEFINE x integer` | `x integer` in `DECLARE` block |
| `DE精细x,y整数`转换为单个声明
'let x=y`'x:=y`
'if…艾利夫…结束if``if…埃尔西夫…当x=y时,如果
`结束…结束while``while x=y循环…结束循环`
``退出while`,`exit for`,…|`退出"
`引发异常-746,0",一些文本"` `引发异常"错误:%","一些文本"`
;分号在"结束if"、"结束for"之后可选…|始终需要分号<
``执行过程名称(x,y)`,`调用名称(x,y)` ` ` `选择名称(x,y)`,`执行名称(x,y)` ` ` `
-informix:
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `如果不匹配,则插入(x1,x2)值(y1,y2)
```
-postrgres:
````
insert into x(x1,x2)
x(x1,x2)
y选择y1,y2从y中选择y1,y2从y
on冲突(x1)do update set x1=y1,x2=y2
``
` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `允许
-append下划线,例如"all"、"end"、"default"…
####约束名
-postgres:约束名必须不同于表名
-前缀约束名,例如,使用"pk_u"
必须单独定义nction
-informix:`alter table x add a int beforc`
-postgres:`before`不受支持
-`beforc`beforc`beforc`beforc`beforc`beforc不支持
-informix:
````
````
foreach select a,b into x,y from x,y from,a,b into x,y from,x,y from,a,b,b into x,y from x,y from,a,b,b,b,b,b,a…
。…
结束foreach
```
-postgres:
````
记录在select a as x,b as y
from…循环
…
x:=记录x;
y:=记录y;
…
结束循环;
````
-直接使用记录类型可能更干净。
from a,outer(b)`
-postgres:不支持
-支持在简单情况下有限地转换为ansi连接。
/>开始
…
异常
当未定义的_表或重复的_表时,然后
…
结束
`````
-只有少数错误代码被映射
-不支持恢复
-不支持无错误代码的异常
`十进制(20)`
-如果省略informix中的小数位数,则不固定。
-如果省略postgres中的小数位数,则默认为零。
-当前,这些情况将转换为"十进制(30,10)"。
`
-postgres:`类似于"%[a-z]`
-这是为文本字符串模式转换的,但如果模式是变量则不转换。
但是,如果切片位于"let"语句(变量赋值)的左侧,则这不起作用。不支持
;
;
`set lock mode
124;`database[@server]:名称`
`sys*`tables
`let x,y=y,x`
`grant`,`revoke`
多个返回值使用"record"类型或"out"参数
命名返回参数
.
[infile[infile…]]
将SQL代码导入另一种方言。
positional arguments:
infile
optional arguments:
-h,--help显示此帮助消息并退出olders:""=
输入文件路径;"%"表示最后一个文件的输入文件路径
已删除扩展名;"%"表示最后一个文件的输入文件路径
已删除两个文件扩展名;…
--outdir outdir,-d outdir
输出基本目录
--替换,-r替换输入文件
--文件列表[文件],-f[文件]
re来自文件或stdin的ad文件列表
--quiet,-q不输出任何内容
--verbose,-v verbose output
--debug,-d调试输出
--parse tree,-t show parse tree
--lex,-l show lexer output
--informix,-i generate informix sql
````
formations
#### Data types
| Informix | Postgres |
| --------- | ------------------- |
| `lvarchar` | `varchar` |
| `varchar(x,y)` | `varchar(x)` |
| `byte` | `bytea` |
| `interval (1) year to month` | `interval` |
#### Literals
| Informix | Postgres |
| ---二、二、二、二、二、二、二、二、二、二、二、二、二、二、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、三、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四、四——————————————————————————————————————————————————————————————————————————限制1`
`选择唯一…` `选择不同…`
`选择…在temp x ` `创建临时表x as select…`
`从表(某些函数(a,b)的x,y,z)中选择x,y,z作为t(x,y,y,z)` `从某些函数(a,b)的x,y,z中选择x,y,z作为t(x,y,z)的t(x,y,z)选择x,y,z
` nvll(x,y)` ` `合并(x,y)`
/>`改变表添加约束主键…` ` `改变表添加主键…` `改变表添加主键…` ` ` `改变表添加主键…` `
`更新统计信息[用于表e]` | `ANALYZE [table_name]` |
#### Procedures
| Informix | Postgres |
| -------- | -------- |
| `CREATE PROCEDURE` | `CREATE FUNCTION` |
| `DROP PROCEDURE` | `DROP FUNCTION` |
| `RETURNING` | `RETURNS` |
| no return value | `RETURNS void` |
| `DEFINE x integer` | `x integer` in `DECLARE` block |
| `DE精细x,y整数`转换为单个声明
'let x=y`'x:=y`
'if…艾利夫…结束if``if…埃尔西夫…当x=y时,如果
`结束…结束while``while x=y循环…结束循环`
``退出while`,`exit for`,…|`退出"
`引发异常-746,0",一些文本"` `引发异常"错误:%","一些文本"`
;分号在"结束if"、"结束for"之后可选…|始终需要分号<
``执行过程名称(x,y)`,`调用名称(x,y)` ` ` `选择名称(x,y)`,`执行名称(x,y)` ` ` `
-informix:
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `如果不匹配,则插入(x1,x2)值(y1,y2)
```
-postrgres:
````
insert into x(x1,x2)
x(x1,x2)
y选择y1,y2从y中选择y1,y2从y
on冲突(x1)do update set x1=y1,x2=y2
``
` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `允许
-append下划线,例如"all"、"end"、"default"…
####约束名
-postgres:约束名必须不同于表名
-前缀约束名,例如,使用"pk_u"
必须单独定义nction
-informix:`alter table x add a int beforc`
-postgres:`before`不受支持
-`beforc`beforc`beforc`beforc`beforc`beforc不支持
-informix:
````
````
foreach select a,b into x,y from x,y from,a,b into x,y from,x,y from,a,b,b into x,y from x,y from,a,b,b,b,b,b,a…
。…
结束foreach
```
-postgres:
````
记录在select a as x,b as y
from…循环
…
x:=记录x;
y:=记录y;
…
结束循环;
````
-直接使用记录类型可能更干净。
from a,outer(b)`
-postgres:不支持
-支持在简单情况下有限地转换为ansi连接。
/>开始
…
异常
当未定义的_表或重复的_表时,然后
…
结束
`````
-只有少数错误代码被映射
-不支持恢复
-不支持无错误代码的异常
`十进制(20)`
-如果省略informix中的小数位数,则不固定。
-如果省略postgres中的小数位数,则默认为零。
-当前,这些情况将转换为"十进制(30,10)"。
`
-postgres:`类似于"%[a-z]`
-这是为文本字符串模式转换的,但如果模式是变量则不转换。
但是,如果切片位于"let"语句(变量赋值)的左侧,则这不起作用。不支持
;
124;`database[@server]:名称`
`sys*`tables
`let x,y=y,x`
`grant`,`revoke`
多个返回值使用"record"类型或"out"参数
命名返回参数
.