【发布时间】:2011-01-23 09:32:54
【问题描述】:
我对 postgresql 很陌生。
实现这一目标的最佳方法是什么?
SELECT get_columns()
FROM table_name;
get_columns() 将为查询提供列名。我看到有人建议使用 EXECUTE 语句,但我无法使用。
假设有一个包含 a、b、c 列的表 Test 我想跑
SELECT a,b FROM Test;
SELECT a,c FROM Test;
动态生成列名。
【问题讨论】:
-
有什么意义?如果您不知道列名,只需在查询中使用 *。也许我错过了什么?
-
他所说的是
get_columns()将返回任一 列a和c或列a和b。他不想要所有列,只想要程序生成的列。 -
这个想法是 get_columns() 将接受一些参数,因此将返回适当的列以在某处使用。当处理 COPY FROM 命令时,这篇文章将很有用,我需要根据我选择的 csv 文件提供列名。
-
但是如果您知道函数的参数,为什么不知道列名?您可以获得列名,没问题,但如果您已经知道它们(请参阅参数),则无需再次获取它们。
-
让我在这里谈谈我的用例。我们运行一个项目,嵌入式设备将文件发送到我们的服务器。有 3-4 种类型的设备,每种类型都有多个版本号。每个设备发送一个 csv 文件,每行大约 150 个条目,每个设备列略有变化。我们有每种设备类型的表格(我将从其中提取列名)。我需要使用 COPY FROM 将这些文件导入一个巨大的表(一个用于所有设备)我不想为每种类型的设备文件列出 9 个不同的 COPY FROM 命令。我需要一种更简洁的方式来完成这一切。
标签: sql postgresql