Fly to the sky & Return

[C#] 두개의 mdb파일 내부에 있는 테이블을 합치는 코드 본문

프로그래밍/c# & VB 등

[C#] 두개의 mdb파일 내부에 있는 테이블을 합치는 코드

낼은어떻게 2016. 4. 2. 00:33
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

같은 테이블 구조를 가지는  여러 mdb 파일이 있다고 할때  이런 테이블 하나의 테이블로 합치고 작업하는 것이 수월할것입니다.

한두개라면 그냥 하겠는데  수백개가 있다면 매크로나 vba 를 만들어 사용해야 할터입니다.    


여기서는 c#을 이용해서  만들어보겠습니다.  최종목표는  특정폴더를 선택하면  그 폴더내에 있는 mdb파일내부의 특정 테이블을 합치는 것입니다. 


오늘은  일단 두개의 파일을 합처보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb; // mdb 파일을 사용하기 위해 필요합니다. 
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string db_path1 = @"c:\test\test1.mdb";
            string db_path2 = @"c:\test\test2.mdb";
 
            string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + db_path1 + ";Jet OLEDB:Database Password=";
            OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connStr);
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            conn.Open();
 
           string sql = @"SELECT * INTO test_table FROM  (SELECT* FROM [" + db_path1 + "; PWD =].[table_이름] UNION  SELECT* FROM[" + db_path2 + "; PWD =].[table_이름])";
             //db_path1에 있는 테이블과  db_path2에 있는 테이블을 합쳐서 test_table에 집어 넣는 코드
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
 
            conn.Close();
        }
    }
 
   
}
 
 
 
cs



열심히 만들고보니...  union 을 사용할 필요가 없이... 그냥   insert  query만 사용해도 될것 만 같은 느낌이네영. 


머 그래도  union 을 사용해봤다는 것에서 만족을 합니다.