none
请教sqlserver大量数据导入导出解决思路 RRS feed

  • 问题

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

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

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

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

      我想过的方案:

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

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

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

     

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

    2014年5月11日 8:57

答案