(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 中的另一个表中为该日期列出的最大行数限制插入到表中的行

如何使用 VBA 将“整个”DAO 记录集插入到表中

我想将表单中的数据插入到表中,然后从另一个表中选择另一个数据并使用 PHP 插入到第三个表中

MySQL 插入查询中提到的 Java Array 元素未插入到表中。而是抛出错误

如何使用 c#asp.net 将数据库中的数据插入到表中?

在 Oracle 中将结果集插入到表中