请教sqlserver大量数据中部分数据(仍然大量,多表)导入导出解决思路

代码工厂 课程设计 1

在项目(C#和sqlserver2012)里有个需求是把数据库中存储的一些信息导出为文件(任意格式)以存档,并要求能够将导出去的数据重新导入到数据库(与原始数据库结构完全相同的另一个数据库,专门用来存放导入的数据)中以临时查看存档的数据。数据库中分为 A B C三个部分,分别导出其中满足查询结果的数据,每部分包含多张表,有部分表 数据量很大 ,这部分表大概一次导出操作要保存百万条数据以上千万以下,这部分数据的文件大小1G左右的。

我的问题是,用C#代码完成以下操作:

(1)如何能够导出数据的同时把数据库的结构也保存到导出的文件中,以便于再导入时能够恢复原来的状态(比如满足参照完整性)。

(2)如何能够高效的导出(导入)这么大量数据。

我想过的方案:

(1)最开始,想过把数据查到一个DataSet里面,再把这个DataSet序列化到硬盘上,导入的时候把这个逆序列化为DataSet再保存到数据库中。但是这个感觉方案肯定不行,因为这个DataSet首先要载入内存,一次把GB级数据载入到内存效率太低。想以流的形式把数据到出去,又不知道怎么做。

(2)把数据导出为xml或excel,导入的时候一条一条的解析,但是这需要我自己维护导出了哪些数据的信息。

(3)把数据在sqlserver服务器上复制到另一个临时数据库中,把这个临时数据库分离,保存分离出的文件。要想导入的时候,再附加这个数据库。这个可行吗?请各位大侠不吝赐教。

小生刚刚学C#,苦于无经验困扰,烦请各位指个明路,谢谢。

回复

共1条回复 我来回复
  • 源码客栈网
    这个人很懒,什么都没有留下~
    评论

    一两个G的数据最好是用数据库。

    1:clone一个同样的空数据库。

    2:定期将要保存的数据导入到克隆的数据库中对应的表中。

    3:对克隆数据库进行备份,备份成功后清空克隆数据库。

    4:每次重复以上2,3步骤

    因为一两个G数据也不算少,建议用SQL计划或WIN服务 在空闲时间定时执行。

    0条评论

发表回复

登录后才能评论