Mercurial > hgrepos > hgweb.cgi > s4
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 |