changeset 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 7ece8cc62a7a
files s4-blog.sh
diffstat 1 files changed, 24 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/s4-blog.sh	Thu Dec 05 12:36:28 2019 +0900
+++ b/s4-blog.sh	Sat Dec 07 15:36:47 2019 +0900
@@ -701,15 +701,36 @@
       # we take the line as column list.
       # Otherwise we produce two column CSV as below:
       # USER,ANSWER
+      query "DROP TABLE IF EXISTS tmp_q;"
       if [ -n "$csvline" ]; then
-	:
+	query <<-EOF
+	  CREATE TEMPORARY TABLE tmp_q("user", $csvline);
+	EOF
+	if [ $? != 0 ]; then
+	  contenttype; echo
+	  cat <<-EOF | html p; exit
+		掲示板のヘッダにあるCSV定義が不正でCSV出力できません。
+		$csvline
+		空白なしの項目名を半角カンマ区切りで1行で書いてください。
+		EOF
+	fi
       else
 	query <<-EOF
-	  DROP TABLE IF EXISTS tmp_q;
 	  CREATE TEMPORARY TABLE tmp_q(user text PRIMARY KEY, answer);
 	EOF
       fi
   esac
+  if $copy2csv; then
+    mkdir $bd/$rid
+    outcsv=$bd/$rid/migrate-$rid.csv
+    sq "$db" <<-EOF | tr '|' ',' > $outcsv
+	SELECT author as "USER",
+	       replace(val, x'0a', ',') as "${csvline:-ANSWER}"
+	FROM article a JOIN article_s s ON a.id=s.id
+	     	AND blogid=(SELECT id FROM blog WHERE rowid=$rid)
+	     	AND s.key='text';
+	EOF
+  fi
   query <<-EOF |
 	SELECT a.rowid, a.id artid, a.author, s.val
 	FROM article a JOIN article_s s ON a.id=s.id
@@ -721,11 +742,6 @@
     mkdir -p $dir
     echo "$author" > $dir/Author
     echo "$text" > $dir/Text
-    if $copy2csv; then
-      query "REPLACE INTO tmp_q SELECT author, val
-	   FROM article a NATURAL JOIN article_s s
-	   WHERE blogid='$blogid' AND key='text';"
-    fi
     i=0
     query "SELECT m.rowid, m.val FROM article_m m \
 	   WHERE id='$artid' AND m.key IN ('image', 'document', 'binary');" \
@@ -760,6 +776,7 @@
     query <<-EOF > $bd/$rid/all-text-$rid.csv
 	.mode csv
 	.head 1
+	.import $outcsv tmp_q
 	SELECT * FROM tmp_q;
 	.mode list
 	.head 0

yatex.org