(Golang)将数组中的所有行插入到表中
Posted
技术标签:
【中文标题】(Golang)将数组中的所有行插入到表中【英文标题】:(Golang) Insert all rows from an array to a table 【发布时间】:2021-12-24 14:30:40 【问题描述】:我使用的数据库是 postgresql。我想做的是:-
-
我有一个存储不同字符串值的数组(例如大小为 4 [a,b,c,d]
我有一个名为“secret”的表格列
我想将数组中的所有值插入到表中的每一行(例如,假设我们在表中有 4 行,第 1 行、第 2 行、第 3 行和第 4 行。值“a”来自数组应该插入到第 1 行,而值“b”应该插入到第 2 行,其他的也一样。基本上只是更新所有行。
这是我的代码:-
secret:= make([]string, count) //count = all the row from the column.
for i := range secret
_ = i
testSecret:= random_string.GenerateString(10) //method for generating random string
secret = append(secret, testSecret)
//update query
pgUpdate := `UPDATE table SET secret= $1`
err = db.QueryRow(pgUpdate, secret).Scan()
if err != nil
log.Fatalf("Unable to execute the UPDATE query. %v", err)
我得到“类型:不支持的类型 []string,一段字符串”的错误
我是golang的新手,不知道我应该寻找什么,所以如果还有什么请教育我。
【问题讨论】:
以下是否回答了您的问题? ***.com/a/62889212/965900 @mkopriva 谢谢你的回答,会试试看。 @mkopriva 我只想更新一列,但所有行都具有唯一的字符串。我没有任何 id 列支持 SQL 语句,还有可能做吗?我想做一些事情,比如在生成唯一字符串时一一更新行。 如果您无法通过某个唯一值识别它们,您如何知道要更新哪些行?还是要更新表格中的每一行? 每一行都是。但是每一行都有唯一的字符串。 【参考方案1】:我使用动态 SQL 编写了一个简单的查询。示例:
do
$body$
declare
per RECORD;
begin
FOR per IN
select 'insert into table1 (' || string_agg(main.fnames, ',') || ') values (' || string_agg(main.sval::text, ',') || ');' as p_sql from (
select
'row' || (ROW_NUMBER() OVER(ORDER BY (SELECT NULL)))::text AS fnames,
'''' || t2.sval || '''' as sval
from (
select t1.sval from unnest('a,b,c'::text[]) as t1(sval)
) t2
) main
LOOP
execute per.p_sql;
end loop;
end;
$body$
LANGUAGE 'plpgsql';
【讨论】:
以上是关于(Golang)将数组中的所有行插入到表中的主要内容,如果未能解决你的问题,请参考以下文章
根据日期和在 Snowflake 中的另一个表中为该日期列出的最大行数限制插入到表中的行
我想将表单中的数据插入到表中,然后从另一个表中选择另一个数据并使用 PHP 插入到第三个表中