######################################## #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}