# HG changeset patch # User HIROSE Yuuji # Date 1575700607 -32400 # Node ID d4fe749996fdd1e5cee45854befe64c52cf4c77e # Parent 3dbb63414f0b4790e4a9e9dbb504b96b5edf43b2 csvline enabled in heading of enquete mode blog diff -r 3dbb63414f0b -r d4fe749996fd s4-blog.sh --- 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