2012-02-08 5 views
0

데이터베이스에 저장해야하는 약 012 개의 필드 열 (하나의 행)을 가진 거대한 형식이 있습니다.SQL 서버에 많은 수의 열이있는 단일 행 삽입

ADO.NET을 사용하여 이러한 많은 열을 데이터베이스에 삽입하는 가장 좋은 방법은 무엇입니까?

필자는 필자가 필드의 수로 인해 쿼리가 매우 커서이 같은 삽입 문을 사용해야한다고 생각하지 않습니다.

conn.Open(); 
string insertString = @" 
    insert into Categories (CategoryName, Description) 
    values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')"; 

SqlCommand cmd = new SqlCommand(insertString, conn); 
cmd.ExecuteNonQuery(); 

나는 임시 파일에 데이터를 덤프하고 데이터 테이블로 추가 한 후 SqlBulkCopy의를 사용하여 데이터베이스에 삽입 생각합니다.

더 좋은 방법이 있습니까? 이 상황을 어떻게 처리할까요?

+3

테이블에도 ~ 110 개의 필드가 있으면 미안하지만 잘못하고 있습니다. 여러 테이블에 리팩터링/정규화하고 여러 개의 관련 INSERT 문을 수행합니다. – Yuck

+0

한 번에 몇 개의 행을 추가합니까? 110 열이있는 단일 행입니까? 아니면 한 번에 많은 행을 말하고 있습니까? –

+0

@Yuck : 나는 그것을 도울 수 없다. 나는 그것을 할 시간이 걸릴 수 있으면 좋겠다. 그러나 그것은 불행히도 내가 지금 제어 할 수있는 것이 아닙니다. – Animesh

답변

1

이 열 수를 삽입하기위한 좋은 바로 가기가 없지만 매개 변수를 사용하면 디버깅 시간이 절약 될 수 있습니다. 매개 변수를 사용하면 문자열 및 유형 변환에서 아포스트로피가 마음에 들지 않아도됩니다. 여기에 샘플이 있습니다 :

public static void TryThis() 
{ 
    try 
    { 
    using (SqlConnection con = new SqlConnection()) 
    { 
     con.ConnectionString = "YourConnectionString"; 
     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "INSERT INTO Categories (CategoryName, Description) VALUES (@CategoryName, @Description)"; 
     cmd.Parameters.AddWithValue("CategoryName", "Miscellaneous"); 
     cmd.Parameters.AddWithValue("Description", "Whatever doesn't fit elsewhere"); 
    } 
    } 
    catch (Exception ex) 
    { 
    throw new Exception(ex.Message); 
    } 
} 
관련 문제