从SAS表创建PostgreSQL表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从SAS表创建PostgreSQL表相关的知识,希望对你有一定的参考价值。

我正在从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 |
+----------+--------------+------+-------+-----+-----+

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

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

任何建议表示赞赏!

答案

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

select "end" from ... 

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

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

以上是关于从SAS表创建PostgreSQL表的主要内容,如果未能解决你的问题,请参考以下文章

从 jdbc/postgresql 获取新创建表的列元数据

伪代码转换为SAS宏代码

python postgresql从pandas数据框创建数据库并填充表

来自 SAS 数据集的 Oracle 表

从底部工作表对话框片段中获取价值

SQL/SAS:创建表在哪里不存在?