【发布时间】:2017-07-18 13:07:12
【问题描述】:
我有一个包含 90 列的 csv,我需要将其作为表导入到我的 pgsql 数据库中(还有几个包含大量列的 csv 文件,我想应用此方法)。我的目标是避免使用 CREATE TABLE 查询手动指定 90 个单独的列。
表格中的列标题应与 csv 中的列标题保持一致,并且每一列都应作为精度为 2 个小数点的数字数据类型导入。
到目前为止,我遇到的唯一可以执行此操作的程序是pgfutter,我已成功安装它。但是,我要连接的数据库是 AWS 上的远程数据库,不清楚在哪里输入连接详细信息。另外,安装后,在请求帮助信息时出现错误:
$ ./pgfutter --help
-bash: ./pgfutter: Permission denied
任何人都可以建议pgfutter 中的解决方法或另一种方法将具有简单数字列的 csv 文件自动导入 PostgreSQL 吗?
【问题讨论】:
-
我会检查
pgfutter的权限并确保它是可执行的。听起来那是你的拦路虎。ls -l pgfutter之类的东西应该向您显示权限(在左侧)。chmod命令可用于更改权限(请参阅man chmod)。 -
"我有一个包含 90 列的 csv,我需要将其作为一个表导入到我的 pgsql 数据库中" 一个 90 列的 SQL 表是一个设计得很糟糕的表,将工作的噩梦。您应该做一些工作来将 CSV 数据转换为更合理的数据。也许可以问这个。
-
为什么它会自动成为一个设计不佳的表格,而不仅仅是一个包含许多不同变量的表格?
-
表中的列不是“变量”。它们是表所代表的实体的属性。一个有 90 列的表通常表明该表没有正确规范化,实际上是结合了来自不同实体的信息。但我同意这个讨论与这个问题无关。
标签: postgresql csv