SQL 대량 대상 테이블 이름

c# database sqlbulkcopy sql-server

문제

.csv 파일을 사용하여 SQL Server 데이터베이스에 대량 삽입합니다. 문제는 DestinationTableName 나에 대한 문자열을 사용할 때 때문에 DestinationTableName , 나는 오류 예외가

System.InvalidOperationException : 대상 테이블에 액세스 할 수 없습니다.

스크린 샷에서 볼 수 있듯이

copy.DestinationTableName = "test"와 같이 "test"를 사용하는 경우; 잘 작동한다.

여기에 이미지 설명을 입력하십시오.

string symbolName = dt.Rows[1][0].ToString();

string strConnection = @"Data Source =.\SQLEXPRESS; AttachDbFilename = C:\USERS\JEF\DOCUMENTS\DATABASE1.MDF; Integrated Security = True; Connect Timeout = 30; User Instance = True";
SqlConnection condb2 = new SqlConnection(strConnection);

string createTablerow ="create table ['"+symbolName+"'] (code1 VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS,date1 varchar(50),open1 varchar(50),high1 varchar(50),low1 varchar(50),close1 varchar(50),vol1 varchar(50))";

using (SqlConnection connection = new SqlConnection(strConnection))
{
    SqlCommand command1 = new SqlCommand(createTablerow, connection);
    connection.Open();
    command1.ExecuteNonQuery();
}

using (SqlConnection cn = new SqlConnection(strConnection))
{
    cn.Open();

    using (SqlBulkCopy copy = new SqlBulkCopy(cn))
    {
        copy.ColumnMappings.Add(0, "code1");
        copy.ColumnMappings.Add(1, "date1");
        copy.ColumnMappings.Add(2, "open1");
        copy.ColumnMappings.Add(3, "high1");
        copy.ColumnMappings.Add(4, "low1");
        copy.ColumnMappings.Add(5, "close1");
        copy.ColumnMappings.Add(6, "vol1");

        copy.DestinationTableName = symbolName;

        copy.WriteToServer(dt);
    }
}

수락 된 답변

표를 만들 때와 마찬가지로

"create table ['"+symbolName+"']

여기서 트릭은 테이블 이름을 이스케이프 처리하여 하이픈을 보완하는 것이므로 다음과 같습니다.

copy.DestinationTableName = "[" + symbolName + "]";

참고 : 가능한 경우 탈출 할 필요가없는 이름을 사용하는 것이 좋습니다. 하지만 ... 작동한다면.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.