我是数据库管理的新手,我们正在使用 psql。我需要做的就是将 csv(大约 200 个表)迁移到我们的数据库中。为每个 csv 文件手动创建表格有点累,所以请帮帮我,有没有办法从 csv 文件生成表格?
问问题
2123 次
1 回答
1
OP在 DBA Stackexchange 上回答。我在这里复制答案,因为这是我的搜索引擎返回的第一个链接。
OP 制作了如下脚本:
DATADIR='data' # this directory name
PREFIX='jobd'
DBNAME='divacsv'
function createSchema {
COLUMNS=`head -n 1 $1 |
awk -F, '{for(i=1; i<=NF; i++){out=out $i" text, ";} print out;}' |
sed 's/ text, $/MYEXTRA text/' |
sed 's/"//g'`
CMD_CREATE="psql $DBNAME -c \"CREATE TABLE $2 ($COLUMNS);\""
echo $CMD_CREATE
sh -c "$CMD_CREATE"
CMD_COPY="psql divacsv -c \"COPY $2 FROM '"`pwd`"/$1' DELIMITER ',' CSV;\""
echo $CMD_COPY
sh -c "$CMD_COPY"
}
for file in $DATADIR/*.csv; do
table=$PREFIX"_"`echo $file | sed 's/.*\///' | sed 's/.csv//' `
createSchema "$file" $table
done
评论建议HEADER
可能需要避免使用标题文本加载第一行,这是真的。
我已经测试了这段代码,但无法让它在 CentOS 下运行。
于 2021-06-24T13:55:54.620 回答