ユーザ用ツール

サイト用ツール


postgresqlからsqlite
########################################
#PostgreSQL から SQLite 作成+zip圧縮
#パラメータ 1:tablefile名 2:sqliteDB名
########################################
TABLEFILE=$1
SQLITEDBNAME=$2
POSTGRESUSER=postgres
POSTGRESDB=postgres
WKSQL=./_pgdata.sql 

###################
#パラメータ指定
###################
if [ "${TABLEFILE}" = "" ]
then
    echo "**tablefile error"
    exit 1
fi
if [ ! -e ${TABLEFILE} ]
then
    echo "**tablefile error"
    exit 1
fi
if [ "${SQLITEDBNAME}" = "" ]
then
    echo "**sqlite name error"
    exit 1
fi
###################
#TABLE配列展開
###################
while read TBL
do
    if [ ${TBL} != "" ] 
    then 
        TABLENAME="${TABLENAME} --table=${TBL}"
    fi
done < ${TABLEFILE} 

####echo -e ${DROPSQL}
####echo ${TABLENAME}
if [ "${TABLENAME}" = "" ]
then
    echo "**table name error"
    exit 1
fi

####################
#ファイル削除
####################
mv ${SQLITEDBNAME} ${SQLITEDBNAME}.old
rm ${WKSQL}


####################
#WKSQL作成
####################
####insert
####pd_dumpはpostgresユーザーで実行を行う。
echo "postgres dump ${TABLENAME}"
echo -e "PRAGMA synchronous = OFF;\n" > ${WKSQL}
pg_dump --format=p ${TABLENAME} --column-inserts --no-owner --no-tablespaces --   schema-only --no-privileges --username=${POSTGRESUSER} ${POSTGRESDB} >> ${WKSQL}

####################
#pg_dumpで生成されたSQLからcreate index を作成する
####################
while read LINE
do
  if [ "${LINE}" != "" ] 
  then 
      ####ALTERで始まる行を探す
      ARY=(${LINE})
      if [ ${ARY[0]} = "ALTER" ]
      then 
          ####ALTER TABLE xx 
          #### ADD CONSTRAINT xx_pkey PRIMARY KEY ( field...) 
          ####からインデックス名とフィールドを切り出す 
          IDXTABLE=${ARY[3]}
          read LINE
          ARY=(${LINE})
          ####echo ${LINE}
          IDXNAME=${ARY[2]}
          IDXFIELD=${LINE##*PRIMARY KEY}
          ####echo "CREATE INDEX ${IDXNAME} ON ${IDXTABLE} ${IDXFIELD}" 
          echo "CREATE UNIQUE INDEX ${IDXNAME} ON ${IDXTABLE} ${IDXFIELD}" >>  ${WKSQL}
        fi
    fi
done < ${WKSQL}

####################
#pg_dumpでデータを出力する
####################

pg_dump --format=p ${TABLENAME} --column-inserts --no-owner --no-tablespaces --   data-only --no-privileges --username=${POSTGRESUSER} ${POSTGRESDB} >> ${WKSQL}

####################
#sqlliteを生成する
####################
echo "sqlite import ${SQLITEDBNAME}"
sqlite3 ${SQLITEDBNAME} ".read ${WKSQL}" 

####################
#zip 圧縮先のファイル名 圧縮するファイル名
####################
zip ${SQLITEDBNAME}.zip ${SQLITEDBNAME}
postgresqlからsqlite.txt · 最終更新: 2019/06/30 12:22 by 127.0.0.1