teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2018/03/05 13:34

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,9 +1,7 @@
1
- CSVとはせず、textで1行1項目として取り込んだ後に、加工するしかないかと思います
1
+ CSVとはせず、textで1行1項目として取り込んだ後に、加工するのはどうでょうか。
2
2
 
3
- 一旦仮テーブルに取り込んで置いて、その後配列として分解して本来のテーブルに挿入
3
+ 一旦仮テーブルに取り込んで置いて、その後配列として分解して本来のテーブルに挿入
4
- (string_to_array([カラム],','))[添え字]
4
+
5
- 上記のような記述で追加すれば良いかと。
6
- ※添え字に該当するものが無い場合はNullになる
7
5
  ```SQL
8
6
  CREATE TABLE test3 (id int, length int, col1 text, col2 text, col3 text);
9
7
  CREATE temp TABLE test (item text) on commit drop;
@@ -15,4 +13,5 @@
15
13
  , string_to_array(item ,','))[4] -- col2
16
14
  , string_to_array(item ,','))[5] -- col3
17
15
  from test
16
+ --※添え字に該当するものが無い場合はNullになる
18
17
  ```

2

追記

2018/03/05 13:34

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,6 +1,18 @@
1
1
  CSVとはせず、textで1行1項目として取り込んだ後に、加工するしかないかと思います。
2
2
 
3
3
  一旦仮テーブルに取り込んで置いて、その後配列として分解して本来のテーブルに挿入
4
- ```(string_to_array([カラム],','))[添え字]```
4
+ (string_to_array([カラム],','))[添え字]
5
5
  上記のような記述で追加すれば良いかと。
6
- ※添え字に該当するものが無い場合はNullになる
6
+ ※添え字に該当するものが無い場合はNullになる
7
+ ```SQL
8
+ CREATE TABLE test3 (id int, length int, col1 text, col2 text, col3 text);
9
+ CREATE temp TABLE test (item text) on commit drop;
10
+ COPY test FROM '/data.csv' WITH text;
11
+ insert into test3
12
+ select string_to_array(item ,','))[1]::int -- id
13
+ , string_to_array(item ,','))[2]::int -- length
14
+ , string_to_array(item ,','))[3] -- col1
15
+ , string_to_array(item ,','))[4] -- col2
16
+ , string_to_array(item ,','))[5] -- col3
17
+ from test
18
+ ```

1

修正

2018/03/05 13:00

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  CSVとはせず、textで1行1項目として取り込んだ後に、加工するしかないかと思います。
2
2
 
3
- レイアウトなかは、
3
+ 一旦仮テーブルに取り込んで置いて、そ後配列として分解して本来テーブルに挿入
4
- ```array_length(string_to_array([カラム],','),1)```
4
+ ```(string_to_array([カラム],','))[添え字]```
5
- どとして、項目数判断る等が考えらます
5
+ 上記のよう記述追加すれば良いかと
6
+ ※添え字に該当するものが無い場合はNullになる