如何从一个DataTable中复制数据行到另一个DataTable中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从一个DataTable中复制数据行到另一个DataTable中相关的知识,希望对你有一定的参考价值。
假如返回的DataTable就是 dt ,方法一:
直接复制一个DataTable,然后清空数据(Column结构还保留),最后再用ImportRow()方法从dt中加入需要的Row;
DataTable dt2 = new DataTable();
dt2 = dt.Copy();
dt2.Rows.Clear();
dt2.ImportRow(dt.Rows[0]);//这是加入的是第一行
方法二:
首先新的DataTable必须加入对应的列名(Column)
一个空的没有结构的DataTable是不允许直接向里面加入一行的!
for (int i =0; i < dt.Columns.Count; i++)
dt2.Columns.Add(dt.Columns[i].ColumnName);//有重载的方法,可以加入列数据的类型
然后就可以直接加入Row了!
//1
DataRow drq = dt2.NewRow();
drq.ItemArray = dt.Rows[0].ItemArray;//这是加入的是第一行
dt2.Rows.Add(drq);
//2
dt2.ImportRow(dt.Rows[0]);//这是加入的是第一行
最后可以将新的DataTable放入DataSet中了:
ds = new DataSet();
ds.Tables.Add(dt2); 参考技术A 您好,我来为您解答:
DataTable dt = ""; //这里是填充DataTable数据
DataTable dtNew = dt.Copy(); //复制dt表数据结构
dtNew.Clear() //清楚数据
for (int i = 0; i < dt.Rows.Count; i++)
if (条件语句)
dtNew.Rows.Add(dt.Rows[i].ItemArray); //添加数据行
===前提:我们已经有一个DataTable的数据表 现在需要的只是其中的一行数据===本回答被提问者和网友采纳
如何使用复制命令在 postgres 中将数据从一个表复制到另一个表
【中文标题】如何使用复制命令在 postgres 中将数据从一个表复制到另一个表【英文标题】:How do I copy data from one table to another in postgres using copy command 【发布时间】:2015-09-25 21:10:29 【问题描述】:我们使用copy命令将一张表的数据复制到数据库外的一个文件中。
是否可以使用命令将一张表的数据复制到另一张表中。
如果是,任何人都可以分享查询。
或者有没有更好的方法,比如我们可以使用 pg_dump 或类似的东西。
【问题讨论】:
不需要复制命令:insert into other (col1, col2) select col1, col2 from one
使用复制/转储的时间是在未连接数据库之间移动数据时(使用文件作为过渡)。如果表在同一个数据库中,则不需要这样做。
感谢您的回复,但我很好奇是否可以使用复制命令将数据从一个表复制到另一个表。如果是的话怎么做?
【参考方案1】:
你不能轻易做到这一点,但也没有必要这样做。
CREATE TABLE mycopy AS
SELECT * FROM mytable;
或
CREATE TABLE mycopy (LIKE mytable INCLUDING ALL);
INSERT INTO mycopy
SELECT * FROM mytable;
如果您只需要选择某些列或重新排列它们,您可以这样做:
INSERT INTO mycopy(colA, colB)
SELECT col1, col2 FROM mytable;
您还可以进行选择性 pg_dump 并仅恢复目标表。
【讨论】:
我刚刚为不同架构中的应用创建了重复的表,但是当我尝试使用INSERT INTO mycopy SELECT * FROM mytable
方法时,我得到 ERROR: column "order" is of type integer but expression is of type text LINE 2: SELECT * FROM django_apps.about_post
需要明确的是,order
在两个表中都是一个整数。跨度>
@RyanM 新问题请在两个表中显示来自psql
的\d
输出
@RyanM 同样。您可以通过使用列名来避免这种情况,例如INSERT INTO mycopy (a, b) SELECT * FROM mytable
,但我来这里是为了寻找替代方法。我的表具有所有相同的列,只是顺序不同。事实证明这是不可能的。 ***.com/questions/1267427/…
第二个选项(包括所有)非常适合我使用 postgres 11.2 和 alpine linux 3.9
请注意,使用 (INCLUDING ALL) 创建的表将与其他表共享序列【参考方案2】:
如果两个表中的列相同(名称和数据类型),那么您可以使用以下内容
INSERT INTO receivingtable (SELECT * FROM sourcetable WHERE column1='parameter' AND column2='anotherparameter');
【讨论】:
【参考方案3】:假设已经有一个表,并且您想将所有记录从该表复制到另一个当前不存在于数据库中的表中,那么以下查询将为您完成此任务:
SELECT * into public."NewTable" FROM public."ExistingTable";
【讨论】:
请注意,select ... into
语法已被弃用,取而代之的是符合标准的 create table ... as select ...
以上是关于如何从一个DataTable中复制数据行到另一个DataTable中的主要内容,如果未能解决你的问题,请参考以下文章