0

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

0 回答 0