CREATE TABLE [dbo].[Client] (
[Name] [char] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[Phone] [char] (12) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO请问各位大侠,如何将以上mssql语句转换为postgresql语句呢?
小女子有3点不明白怎么转换,网上查了好多资料也没结果,望有高人指点啊,
感激不尽!
1、字符串排列顺序的“COLLATE Chinese_PRC_CI_AS ”在postgresql中应该怎么表示呢?
2、文件组“ON [PRIMARY]”如何转换?
3、还有GO?
[Name] [char] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[Phone] [char] (12) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO请问各位大侠,如何将以上mssql语句转换为postgresql语句呢?
小女子有3点不明白怎么转换,网上查了好多资料也没结果,望有高人指点啊,
感激不尽!
1、字符串排列顺序的“COLLATE Chinese_PRC_CI_AS ”在postgresql中应该怎么表示呢?
2、文件组“ON [PRIMARY]”如何转换?
3、还有GO?
2、去掉就行,这个是MSSQL 默认的。不写也罢。
3、Go变为;
第一个在postgresql中会报错的,不行哦
至于2,3嘛,目前我也是这么做的,只是想了解一下它们存在的价值,有与没有会有甚么区别?
换成 gb2312_chinese_ci 或者 gbk_chinese_ci 看看。
详细参考可以去下载mysql的参考手册。
+----------+-----------------------------+---------------------+
| Charset | Description | Default collation |
+----------+-----------------------------+---------------------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci |
| dec8 | DEC West European | dec8_swedish_ci |
| cp850 | DOS West European | cp850_general_ci |
| hp8 | HP West European | hp8_english_ci |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci |
| latin1 | cp1252 West European | latin1_swedish_ci |
| latin2 | ISO 8859-2 Central European | latin2_general_ci |
| swe7 | 7bit Swedish | swe7_swedish_ci |
| ascii | US ASCII | ascii_general_ci |
| ujis | EUC-JP Japanese | ujis_japanese_ci |
| sjis | Shift-JIS Japanese | sjis_japanese_ci |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci |
| tis620 | TIS620 Thai | tis620_thai_ci |
| euckr | EUC-KR Korean | euckr_korean_ci |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci |
| greek | ISO 8859-7 Greek | greek_general_ci |
| cp1250 | Windows Central European | cp1250_general_ci |
| gbk | GBK Simplified Chinese | gbk_chinese_ci |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci |
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci |
| utf8 | UTF-8 Unicode | utf8_general_ci |
| ucs2 | UCS-2 Unicode | ucs2_general_ci |
| cp866 | DOS Russian | cp866_general_ci |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci |
| macce | Mac Central European | macce_general_ci |
| macroman | Mac West European | macroman_general_ci |
| cp852 | DOS Central European | cp852_general_ci |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci |
| cp1251 | Windows Cyrillic | cp1251_general_ci |
| cp1256 | Windows Arabic | cp1256_general_ci |
| cp1257 | Windows Baltic | cp1257_general_ci |
| binary | Binary pseudo charset | binary |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci |
+----------+-----------------------------+---------------------+
还是不行啊
还有,我问的是postgresql,不是mysql,呵呵
我最近才刚开始从sqlserver往mysql迁移。学习中。呵呵
我也是正在转换中...一起努力...
CREATE TABLE [dbo].[Client] (
[Name] [char] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[Phone] [char] (12) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
这段脚本应该是从企业管理器中倒出来的,其中很多本可以不用显示的缺省的值也显示出来,这些值在实际创建中是可以不需要的,你可以在MSSQL中这样创建表:
CREATE TABLE [dbo].[Client] (
[Name] [char] (15) NULL ,
[Phone] [char] (12) NULL
)
GO
这样,换成postgresql可以这样写:
CREATE TABLE Client (
[Name] char(15) NULL ,
[Phone] char(12) NULL
);几个解释和说明:
1、 postgresql目前好像不支持独立字段的排列顺序,好像只和库设置的字符集有关。
2、在MSSQL中文件组“ON [PRIMARY]”是指表的存放位置,“ON [PRIMARY]”是缺省位置。postgresql也有缺省位置pg_default。如果没有必要可以不用加这个内容。如果你们需要多个表空间之类的,可以在建表语句最后加上 ON tablespace_name, tablespace_name是你想把这个表放在那个表空间的表空间名字。
3、在MSSQL中GO表示一个SQL语句的结束,在postgresql中用";"来表示。
4、从表设计上讲Name和Phone用变长字符串更好一点,在MSSQL和postgresql都用varchar数据类型。
我明白了,结贴了