我有一个.txt文件,其中包含用空格分隔的整数。我的表是temp(a int,b int)。我的文件输入内容为
1 918
...
9 12
10 17
...
99 87
100 12
请注意,两个整数之间的间隔取决于第一个整数的“长度”,该长度是可变的。我应该如何将它们复制到我的桌子上?
我的尝试:(肯定是错误的)
COPY temp FROM 'address/to/file' ( FORMAT TXT, DELIMITER(' ') );
我知道必须有多个空间,但我不知道该怎么做。请帮忙。谢谢!
答案 0 :(得分:0)
首先将整行作为一个字段导入到另一个临时表中:
CREATE TEMP TABLE x (t TEXT);
COPY x FROM 'C:\temp\1.txt'
SELECT *
结果:
t
-------
1 918
9 12
10 17
99 87
100 12
然后操作数据并将其放入表中
CREATE TEMP TABLE t (a INTEGER, b INTEGER);
INSERT INTO t
SELECT r[1]::INTEGER, r[2]::INTEGER
FROM (
SELECT REGEXP_SPLIT_TO_ARRAY(t, '\s+') AS r
FROM x
) AS rr
SELECT *
结果:
| a | b |
| --- | --- |
| 1 | 918 |
| 9 | 12 |
| 10 | 17 |
| 99 | 87 |
| 100 | 12 |