[英]Create loop to create PostgreSQL columns
我在csv文件中有一個320列的數據集,其中標題只是行程數。
每列代表一次旅行,即一條街道名稱從A到B的路線。(這是一個簡單的列表,我在excel中將其轉換為以頭為單位創建的旅行編號。)
我想將其導入到postgreSQL表中。
我看到了以前的類似問題 ,但是由於只有320個,所以我想知道這是否是最好的結構,如果是的話,如何循環創建列以便通過pgAdmin插入數據。
我到目前為止已經知道,這會返回錯誤消息:
DO
$do$
BEGIN
FOR i IN 1..320 LOOP
INSERT INTO runs (col_i, col_id) -- use col names
SELECT i, id
FROM tbl;
END LOOP;
END
$do$;
非常感謝
創建具有320個text
列的表:
DO
$$BEGIN
EXECUTE (
SELECT 'CREATE TABLE my_tbl (c'
|| string_agg(g::text, ' text, c')
|| ' text)'
FROM generate_series(1,320) g);
END$$;
合理的關系設計可能是(瘋狂的猜測,幾乎沒有足夠的信息):
CREATE TABLE street (
street_id serial PRIMARY KEY
, street text NOT NULL
);
CREATE TABLE trip (
trip_id serial PRIMARY KEY
, whatever text
);
CREATE TABLE trip_step (
trip_id int REFERENCES trip
, step int
, street_id int NOT NULL REFERENCES street
, PRIMARY KEY (trip_id, step)
);
考慮:
根據您的數據類型,最大列數從250到1600,所以這可能是一個問題
如果您已經在excel中擁有數據,則可以使用另存為CSV並使用COPY
導入數據
https://stackoverflow.com/a/2987451/3470178
或使用字符串連接在excel中創建INSERT語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.