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?

解决方案 »

  1.   

    1、一样
    2、去掉就行,这个是MSSQL 默认的。不写也罢。
    3、Go变为;
      

  2.   

    回楼上的:谢谢你的回答哦
    第一个在postgresql中会报错的,不行哦
    至于2,3嘛,目前我也是这么做的,只是想了解一下它们存在的价值,有与没有会有甚么区别?
      

  3.   

    Chinese_PRC_CI_AS不是MYsql可以辨认的字符集校对规则。
    换成  gb2312_chinese_ci   或者 gbk_chinese_ci   看看。
      

  4.   

    附一个MySql默认字符集和校对规则的对照表
    详细参考可以去下载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 |
    +----------+-----------------------------+---------------------+
      

  5.   

    To iget()兄:劳您费心了,谢谢
    还是不行啊
    还有,我问的是postgresql,不是mysql,呵呵
      

  6.   

    啊。帮你再顶顶吧。
    我最近才刚开始从sqlserver往mysql迁移。学习中。呵呵
      

  7.   

    呵呵,再次谢谢iget(悟不透)兄
    我也是正在转换中...一起努力...
      

  8.   

    从你提供的原始的脚本来看:
    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数据类型。
      

  9.   

    谢谢TodayZ(天山浪子),说的很详细,辛苦了
    我明白了,结贴了