我正在尝试将数据从一个 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