프로그래밍/.NET2013. 2. 7. 15:50

Program.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Text;
using MySql.Data.MySqlClient;

namespace CreateToCSV
{
    class Program
    {
        static void Main(string[] args)
        {
            
            DataSet ds = new DataSet();

            string connString = string.Format(@"Data Source = {0};Database={1};User ID={2};Password={3};allow user variables=true",
                "xxxxxxxxx", "1_account", "root", "xxxxxxxxxx");
            using(MySqlConnection conn = new MySqlConnection(connString))
            {
                string query = "SELECT " +
               "*FROM " +
               "VISIT_T";

                MySqlCommand cmd = new MySqlCommand(query, conn);
                cmd.CommandType = CommandType.Text;
                cmd.CommandTimeout = 120;

                MySqlDataAdapter da = new MySqlDataAdapter(cmd);

                try
                {
                    conn.Open();
                    da.Fill(ds);
                    conn.Close();
                }
                catch (System.Exception ex)
                {
                    conn.Close();
                }
            }


            StreamWriter sw = new StreamWriter("CSV.csv");
            WriteToStream(sw, ds.Tables[0], false, false);
           
            Console.ReadKey();
        }

        public static void WriteToStream(TextWriter stream, DataTable table, bool header, bool quoteall)
        {
            if (header)
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    WriteItem(stream, table.Columns[i].Caption, quoteall);
                    if (i < table.Columns.Count - 1)
                        stream.Write(',');
                    else
                        stream.Write("\r\n");
                }
            }
            foreach (DataRow row in table.Rows)
            {
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    WriteItem(stream, row[i], quoteall);
                    if (i < table.Columns.Count - 1)
                        stream.Write(',');
                    else
                        stream.Write("\r\n");
                }
            }
            stream.Flush();
            stream.Close();
        }

        private static void WriteItem(TextWriter stream, object item, bool quoteall)
        {
            if (item == null)
                return;
            string s = item.ToString();
            if (quoteall || s.IndexOfAny("\",\x0A\x0D".ToCharArray()) > -1)
                stream.Write("\"" + s.Replace("\"", "\"\"") + "\"");
            else
                stream.Write(s);
            stream.Flush();
        }
    }
}


데이터베이스에 있는 데이터들입니다.


생성된 CSV.csv 파일입니다.


WriteToStream(TextWriter stream, DataTable table, bool header, bool quoteall)

세번째, 네번째 인자값으로 TRUE 주시면,

헤더값과 " " 표시됩니다.



CSV 파일을 이용하여 DB Export 하기


출처 - http://knab.ws/blog/index.php?/archives/3-CSV-file-parser-and-writer-in-C-Part-1.html

'프로그래밍 > .NET' 카테고리의 다른 글

[C#]LINQ to XML  (0) 2013.02.09
[C#]const, readonly 상수  (1) 2013.02.09
[C#, MySQL]CSV파일의 데이터를 DB Export  (0) 2013.02.07
[C#]ThreadPool  (0) 2013.02.05
[C#]AutoResetEvent, ManualResetEvent  (0) 2013.02.05
Posted by 건깡