Sqlite SQL插入,CSV到CSV数据争论,如何处理查询?

时间:2018-04-10 13:32:13

标签: sql sqlite csv csvkit

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

0 个答案:

没有答案