将多个csv文件导入和维护到PostgreSQL

时间:2015-09-24 20:44:19

标签: sql r postgresql csv postgresql-copy

我是使用SQL的新手,所以请耐心等待。

我需要将几百个csv文件导入PostgreSQL。我的网络搜索仅指示了如何将许多csv文件导入到一个表中。但是,大多数csv文件具有不同的列类型(都有一个行标题)。有可能以某种方式运行循环,并将每个csv导入到与csv同名的表中吗?手动创建每个表并指定列不是一个选项。我知道COPY将不起作用,因为表格需要已经指定。

也许这在PostgreSQL中不可行?我想在pgAdmin III或PSQL控制台中实现这一点,但我对其他想法持开放态度(使用类似R的东西将csv更改为更容易输入PostgreSQL的格式?)。

我在Windows 7计算机上使用PostgreSQL。有人要求我使用PostgreSQL,这是问题的焦点。

所需的结果是一个包含表格的数据库,然后我将与包含特定网站数据的电子表格一起加入。谢谢!

2 个答案:

答案 0 :(得分:1)

使用pgfutter

一般语法如下所示:

   pgfutter csv       

要在Windows命令提示符下的目录中的所有csv文件上运行此命令,请导航到所需目录并输入:

   for %f in (*.csv) do pgfutter csv %f

请注意,必须将下载程序的路径添加到环境变量的已接受路径列表中。

编辑: 以下是Linux用户的命令行代码

将其作为

运行
   pgfutter *.csv       

或者如果不能做到

   find -iname '*.csv' -exec pgfutter csv {} \;

答案 1 :(得分:1)

在终端中使用nano来制作文件,通过将我目录下的csv文件移动到postgres DB

>nano run_pgfutter.sh

run_pgfutter.sh的内容:

#! /bin/bash
for i in /mypath/*.csv
do
   ./pgfutter csv ${i}
done

然后使文件可执行:

chmod u+x run_pgfutter.sh