我有一个包含90列的csv,我需要将其作为表导入到我的pgsql数据库中(还有几个csv文件包含大量列,我想将此方法应用到)。我的目标是避免使用CREATE TABLE
查询手动指定90个单独的列。
表中的列标题应与csv中的列标题相同,并且每个列都应作为数字数据类型导入,精度为2个小数点。
到目前为止,我遇到的唯一一个这样做的程序是pgfutter我已成功安装。但是,我连接的数据库是AWS上的远程数据库,并且不清楚在何处输入连接详细信息。此外,安装后,我在请求帮助信息时收到错误:
$ ./pgfutter --help
-bash: ./pgfutter: Permission denied
有人可以建议在pgfutter
或其他方法中使用简单的数字列将csv文件自动导入PostgreSQL吗?
答案 0 :(得分:0)
编写一个shell脚本很简单,该脚本从CSV文件的第一行构造CREATE TABLE
语句。
这是我的解决方案:
#!/bin/bash
# makes a CREATE TABLE statement out of the first line of a CSV file
# usage: mktab <tabname> <CSV file>
if [ -z "$2" -o -n "$3" ]; then
echo "usage: mktab <tabname> <CSV file>" 1>&2
exit 1
fi
IFS=,
first=1
echo -n "CREATE TABLE \"$1\" ("
for col in $(head -1 "$2"); do
if [ $first -eq 1 ]; then
first=0
else
echo -n ', '
fi
echo -n "\"$col\" numeric(10,2)"
done
echo ');'
exit 0