读数据库,写入txt文件。
数据量超大,有几十万条数据,甚至上百万条。
要求:读取出这些数据,并且每10万条写入一个txt文件。
请问怎么样读、怎么样写比较快?

解决方案 »

  1.   

    能否具体一点儿?我只是读数据库,然后将这些数据写入txt文件而已,b+树或者哈希表用在何处?
    因为每个txt文件存储10万条数据,所以我用dataset分页填充。
      

  2.   

    10W一个文件不是很大的量~~~SqlDataReader逐条读出全部写入都没问题的~~
      

  3.   

    PhoneNum表中有将近1000W条手机号码数据,SqlDataReader读出数据,生成到TXT文件,每个TXT文件500000,全部生成完毕,记得貌似几十秒~~
    个人机器配置一般,2G内存~    public partial class Form1 : Form
        {
            int _size = 500000;
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                GetDate();
            }        private void GetDate()
            {
                string Sql = "select Col001 from PhoneNum";
                using (SqlDataReader dr = DbHelperSQL.ExecuteReader(Sql))
                {
                    int i = 0;
                    int flag = 1;
                    StringBuilder sb = new StringBuilder();
                    while (dr.Read())
                    {
                        sb.Append(dr[0].ToString() + "\r\n");
                        i++;
                        if (i % _size == 0)
                        {
                            Write_Txt(flag.ToString(), sb);
                            sb.Remove(0, sb.Length);
                            flag++;
                        }
                    }
                    dr.Close();
                    Write_Txt(flag.ToString(), sb);
                }
                MessageBox.Show("OK");
            }        protected void Write_Txt(string FileName, StringBuilder sb)
            {
                string _path = "D:\\TxtData\\" + FileName + ".txt";
                StreamWriter sw = null;
                {
                    try
                    {
                        sw = new StreamWriter(_path, false, System.Text.Encoding.UTF8);
                        sw.Write(sb.ToString());
                        sw.Flush();
                    }
                    catch { }
                }
                sw.Close();
                sw.Dispose();
            }
        }
      

  4.   

    按我也在想这个问题。
    按照“HDNGO”的上面的做法,用SqlDataReader一次性将所有的数据都读到内存里,这样会占用很大的内存空间。因为一个txt文件只存放10万条数据,所以我用适配器分页填充DataSet,一次填充10万条,这样可以减少内存的占用。
      

  5.   

    几十秒钟就能搞定了?SqlDataReader和dataset哪个快?我填充5万条数据进dataset大概需要1、2分钟。
      

  6.   

    用SQL中的自带工具DTS,或用BULK INSERT
      

  7.   


    这句从哪儿来的
    SqlDataReader逐条步进哇~
    用DataSet才占用内存的吧晕~
    程序代码都给你了,你自己批量写入数据,测试一下不就好了?晕~
      

  8.   


    你写进txt文件干什么?写进txt就不管了???以后用不着TXT了???如果你直接按顺序写入TXT那么你将来读取,查询TXT里的数据是很费事的!!所以要用到B+树
      

  9.   


    其实,数据库工具导入导出也是可以通过代码控制的
    在导入导出时最后一步有一个Save DTS Package(我用的是英文版),然后参看一个其中代码就可以