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