我在csv文件中有一个320列的数据集,其中标题只是行程数。
每列代表一次旅行,街道名称从A到B的路线。 (这是一个简单的列表,我在excel中转换以创建行程数作为头。)
我想将它导入postgreSQL表。
我之前看过类似的question,但因为它只有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$;
非常感谢
答案 0 :(得分:3)
创建包含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)
);
考虑:
答案 1 :(得分:0)
根据您的数据类型,最大列数从250到1600,这可能是个问题
What is the maximum number of columns in a PostgreSQL select query
如果您已将数据保存在Excel中,则可以使用另存为CSV并使用func getPosts(getposts : String)
{
Alamofire.request(.GET, getposts, parameters:parameters)
.responseJSON { response in
guard let data = response.result.value else{
print("Request failed with error")
return
}
self.json = JSON(data)
self.tableView.reloadData()
}
}
导入数据
https://stackoverflow.com/a/2987451/3470178
或者使用字符串连接在excel中创建INSERT statmente。