Postgresql

如何從 CSV 自動創建和填充 PostgreSQL 表?

  • February 19, 2021

我是數據庫管理的新手,我們正在使用 PostgreSQL。我需要做的就是將 CSV 文件(對應於大約 200 個表)遷移到我們的數據庫中。為每個 CSV 文件手動創建表格有點煩人,所以請幫幫我。有什麼方法不僅可以導入數據,還可以從 CSV 文件生成表格?

你可以看看PgFutter來幫助你。聽起來它很適合您的案例,因為它根據標題行為 CSV 格式的數據創建表格,然後將數據載入到表格中。

最後,我編寫了一個可以從 CSV 填充表格的腳本。

就是這個:

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

引用自:https://dba.stackexchange.com/questions/114257