comparison s4-blog.sh @ 595:d4fe749996fd

csvline enabled in heading of enquete mode blog
author HIROSE Yuuji <yuuji@gentei.org>
date Sat, 07 Dec 2019 15:36:47 +0900
parents 3dbb63414f0b
children 85fe09f92e13
comparison
equal deleted inserted replaced
594:3dbb63414f0b 595:d4fe749996fd
699 # Create CSV-base table for questionnaire 699 # Create CSV-base table for questionnaire
700 # If heading in blog_s has at least 1 CSV line, 700 # If heading in blog_s has at least 1 CSV line,
701 # we take the line as column list. 701 # we take the line as column list.
702 # Otherwise we produce two column CSV as below: 702 # Otherwise we produce two column CSV as below:
703 # USER,ANSWER 703 # USER,ANSWER
704 query "DROP TABLE IF EXISTS tmp_q;"
704 if [ -n "$csvline" ]; then 705 if [ -n "$csvline" ]; then
705 : 706 query <<-EOF
707 CREATE TEMPORARY TABLE tmp_q("user", $csvline);
708 EOF
709 if [ $? != 0 ]; then
710 contenttype; echo
711 cat <<-EOF | html p; exit
712 掲示板のヘッダにあるCSV定義が不正でCSV出力できません。
713 $csvline
714 空白なしの項目名を半角カンマ区切りで1行で書いてください。
715 EOF
716 fi
706 else 717 else
707 query <<-EOF 718 query <<-EOF
708 DROP TABLE IF EXISTS tmp_q;
709 CREATE TEMPORARY TABLE tmp_q(user text PRIMARY KEY, answer); 719 CREATE TEMPORARY TABLE tmp_q(user text PRIMARY KEY, answer);
710 EOF 720 EOF
711 fi 721 fi
712 esac 722 esac
723 if $copy2csv; then
724 mkdir $bd/$rid
725 outcsv=$bd/$rid/migrate-$rid.csv
726 sq "$db" <<-EOF | tr '|' ',' > $outcsv
727 SELECT author as "USER",
728 replace(val, x'0a', ',') as "${csvline:-ANSWER}"
729 FROM article a JOIN article_s s ON a.id=s.id
730 AND blogid=(SELECT id FROM blog WHERE rowid=$rid)
731 AND s.key='text';
732 EOF
733 fi
713 query <<-EOF | 734 query <<-EOF |
714 SELECT a.rowid, a.id artid, a.author, s.val 735 SELECT a.rowid, a.id artid, a.author, s.val
715 FROM article a JOIN article_s s ON a.id=s.id 736 FROM article a JOIN article_s s ON a.id=s.id
716 WHERE blogid=(SELECT id FROM blog WHERE rowid=$rid); 737 WHERE blogid=(SELECT id FROM blog WHERE rowid=$rid);
717 EOF 738 EOF
719 isfilereadable $user article_s $rowid || continue 740 isfilereadable $user article_s $rowid || continue
720 dir=`printf $bd/%d/%06d "$rid" "$rowid"` 741 dir=`printf $bd/%d/%06d "$rid" "$rowid"`
721 mkdir -p $dir 742 mkdir -p $dir
722 echo "$author" > $dir/Author 743 echo "$author" > $dir/Author
723 echo "$text" > $dir/Text 744 echo "$text" > $dir/Text
724 if $copy2csv; then
725 query "REPLACE INTO tmp_q SELECT author, val
726 FROM article a NATURAL JOIN article_s s
727 WHERE blogid='$blogid' AND key='text';"
728 fi
729 i=0 745 i=0
730 query "SELECT m.rowid, m.val FROM article_m m \ 746 query "SELECT m.rowid, m.val FROM article_m m \
731 WHERE id='$artid' AND m.key IN ('image', 'document', 'binary');" \ 747 WHERE id='$artid' AND m.key IN ('image', 'document', 'binary');" \
732 | while IFS='|' read mrowid filename; do 748 | while IFS='|' read mrowid filename; do
733 outfile=`printf "%s/%02d-%s" "$dir" $((++i)) "$filename"` 749 outfile=`printf "%s/%02d-%s" "$dir" $((++i)) "$filename"`
758 774
759 if $copy2csv; then 775 if $copy2csv; then
760 query <<-EOF > $bd/$rid/all-text-$rid.csv 776 query <<-EOF > $bd/$rid/all-text-$rid.csv
761 .mode csv 777 .mode csv
762 .head 1 778 .head 1
779 .import $outcsv tmp_q
763 SELECT * FROM tmp_q; 780 SELECT * FROM tmp_q;
764 .mode list 781 .mode list
765 .head 0 782 .head 0
766 EOF 783 EOF
767 fi 784 fi

yatex.org