我试图将数据从一个SQLite表插入/压缩到另一个SQLite表。基本上我的工作流程是将CSVkit处理的CSV导入名为import的表中,创建一个名为export的新表,然后将该新表导出为新的CSV。
我唯一不确定的部分是SQL部分,我已经准备好了一个示例数据集。
Ntype |Color|Code
:-------|:----|:---
example1|Blue |xyz
example1|Red |xyx
example2|Black|zyz
example3|Grey |zyz
Name |Option_Name|Option_Value|Code
:-------|:----------|:-----------|:---
example1|Default |Default |
example1|Color |Blue |xyz
example1|Color |Red |xyx
example2|Default |Default |zyz
example3|Default |Default |zyz
怎么会接近这个?有什么东西使用COUNT函数,CASE,GROUP BY?
我到目前为止工作,
INSERT INTO export (Name, Option_Name, Option_Value, Code)
SELECT
Ntype,
???,
???,
Code
FROM import
为了完整起见,这是我正在使用的剧本,
#!/bin/sh
## DESCRIPTION: CSV Import, Wrangle, CSV Export
[ -f "$1" ] && {
FILE="$1"
} || {
echo "$0 FILE"
exit 1
}
## Create Temp Dir
T_DIR="$(mktemp tdir.XXXXX)"
trap 'rm -rf $T_DIR' 0 1 2 3 15
## csvtk grep ..., pass pre-processed CSV to STDIN
## But for this quick example I speciifed the filename.
csvtk csv2tab "$FILE" > "$T_DIR/import.tsv"
sqlite3 << EOF
.separator "\t"
.import $T_DIR/import.tsv import
CREATE TABLE export(
Name NVARCHAR(255) NOT NULL,
Option_Name NVARCHAR(255),
Option_Value NVARCHAR(255),
Code NVARCHAR(255));
## Additional SQL queries
EOF
exit 0