AseBulkCopy.WriteToServer
을 사용하여 임시 테이블을 채울 수 있습니까?Sybase BulkCopy WriteToServer 오류 : ','근처의 구문이 잘못되었습니다
필자는 아래의 메소드를 테스트 애플리케이션에서 두 번 호출합니다. 첫째는 비 임시 테이블과 두 번째로 임시 테이블입니다. 이 코드는 비 임시 테이블과 잘 실행하지만, 임시 테이블을 오류 채울하려고 할 때 :
Incorrect syntax near ','.
가 발생합니다.
두 경우 모두 대상 테이블과 소스 테이블에는 같은 이름의 INT로 정의 된 단 하나의 열만 있습니다.
데이터 원본으로 IDataReader와 DataTable을 사용하려고 시도했지만 둘 다 동일한 오류가 발생합니다.
"EnableBulkLoad = 1"및 "EnableBulkLoad = 2"를 모두 연결 문자열에서 사용하려고했습니다.
원시 임시 테이블 이름과 "dbo"라는 접두어가 붙은 이름을 모두 사용해 보았습니다.
로드 할 데이터는 긴 행이나 여러 행이있는 경우에도 발생하지만 단일 int 값 (즉, 1 행, 1 열)입니다.
AseCommand.ExecuteNonQuery를 사용하여 임시 테이블에 데이터를 삽입 할 수 있으며 AseCommand.ExecuteScalar를 사용하여 임시 테이블에서 'SELECT COUNT (1)'을 성공적으로 실행할 수 있습니다. 그것은 WriteToServer
를 사용하여 임시 테이블을 채울 수 있습니다, 첫째
private static void BulkCopyInsertIntoTable(string tableName)
{
IDataReader dataSource = null;
SqlConnection sourceConnection = null;
MssqlCommand.GetDataReader(SqlServerConnectionString, out sourceConnection, out dataSource);
AseConnection targetConnection = new AseConnection(SybaseConnectionString);
try
{
targetConnection.Open();
AseCommand cmd = new AseCommand();
AseBulkCopy blk = new AseBulkCopy(targetConnection);
blk.DestinationTableName = tableName;
//blk.ColumnMappings.Clear();
//blk.ColumnMappings.Add(new AseBulkCopyColumnMapping(0, 0));//Doesn't make any difference with a datasource, causes an error to be raised with a datatable.
Console.WriteLine("bulkcopy insert into the table " + tableName + " ..starting: datasource");
//blk.WriteToServer(dataSource);
Console.WriteLine("bulkcopy insert into the table " + tableName + " ..starting: datatable");
blk.ColumnMappings.Clear();
DataTable dt = SybaseCommand.GetFakeDataTable(); ;
blk.WriteToServer(dt);
}
catch (AseException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
targetConnection.Dispose();
Console.WriteLine("bulkcopy insert into the table " + tableName + " ..ended");
}
}
: 여기
코드인가? 그것이 맞다고 가정 할 때 내가 뭘 잘못하고있는 것일까 요?UPDATE : 내가 그렇게 WriteToServer
를 사용할 때 임시 테이블의 이름은 방법에 대해이 규칙이며,
blk.DestinationTableName = "XXXX";
저도 같은 오류로 라인
blk.DestinationTableName = tableName;
을 변경하면? tableName 값은 직접 INSERT
및 SELECT COUNT(1)
쿼리에 사용하고 있으므로 올바른 것으로 예상했습니다.
덕분에 내 경험에