从SAS表创建PostgreSQL表

时间:2018-02-28 02:04:40

标签: postgresql sas sqldatatypes

我正在从sas表创建一个PostgreSQL表,sas表显示如下。列woe的类型是数字,其他列是char的类型。

+----------+--------------+------+-------+-----+-----+
| variable | new_variable | type | start | end | woe |
+----------+--------------+------+-------+-----+-----+
| A        | mi_A         | char | 1     |     | 1.3 |
| A        | mi_A         | char | 0     |     | 0.6 |
| B        | mi_B         | char | 1     |     | 5.4 |
| B        | mi_B         | char | 0     |     | 0.1 |
| gnd_cd   | gnd_cd       | char | 3     |     | 1.3 |
| gnd_cd   | gnd_cd       | char | @0    |     | 0.6 |
| gnd_cd   | gnd_cd       | char | 2     |     | 5.4 |
| gnd_cd   | gnd_cd       | char | N     |     | 0.1 |
| gnd_cd   | gnd_cd       | char | 1     |     | 1.3 |
| gnd_cd   | gnd_cd       | char | 99    |     | 0.6 |
| mar_sign | mar_sign     | char | 0     |     | 5.4 |
| mar_sign | mar_sign     | char | Y     |     | 0.1 |
| mar_sign | mar_sign     | char | N     |     |   6 |
+----------+--------------+------+-------+-----+-----+

客户端显示错误:语法错误在或接近"结束"。我认为错误可能是由" start" column.still不知道为什么以及如何解决它。 我的代码只是一个sql,tableA用于postgresql,tableB来自SAS:

create table schema.tableA from select * from mywork.tableB;

任何建议都表示赞赏!

1 个答案:

答案 0 :(得分:0)

SAS在允许变量名称的关键字方面更灵活。在postgresql代码中,您可能需要在变量或数据集名称周围添加双引号,以防止它认为您正在键入关键字。所以使用

select "end" from ... 

如果你这样做,那么请注意名字的情况。没有引号Postgres将默认以全小写形式创建/搜索名称。但是,一旦添加引号,引号中的值必须与变量名称完全匹配。因此,如果您创建名为Name的变量,它实际上会创建一个名为name的变量,您可以引用为NAMENaMe

但是如果你使用引号创建一个混合大小写的变量,比如"Name",那么大写的N将在变量名中,你必须使用"Name"来引用它。没有引号的Name将无效,因为它会查找带有小写name的变量。