首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sybase BulkCopy WriteToServer错误:

Sybase BulkCopy WriteToServer错误:
EN

Stack Overflow用户
提问于 2015-01-15 15:53:05
回答 1查看 629关注 0票数 0

是否可以使用AseBulkCopy.WriteToServer填充临时表?

在我的测试应用程序中,我将调用以下方法两次:第一次调用非临时表,第二次调用临时表。代码在非临时表中运行良好,但是当试图填充临时表时,会出现以下错误:

Incorrect syntax near ','.

已经长大了。

在这两种情况下,目标表和源表只有一个列,定义为一个具有相同名称的INT。

我尝试使用DataTable和IDataReader作为数据源,这两种方法都会引发相同的错误。

我尝试在连接字符串中同时使用"EnableBulkLoad=1“和"EnableBulkLoad=2”。

我尝试使用原始临时表名和以“dbo”为前缀的名称。

要加载的数据是一个int值(即,1行,1列),但如果有较长的行或多行,也会发生这种情况。

值得注意的是,我可以将数据插入临时表(使用AseCommand.ExecuteNonQuery),并可以成功地从临时表(使用AseCommand.ExecuteScalar)执行“SELECT计数(1)”。

以下是代码:

代码语言:javascript
复制
  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");
    }
  }

首先,是否可以使用WriteToServer填充临时表?如果是的话,我可能做错了什么?

更新:当我更改行时

代码语言:javascript
复制
blk.DestinationTableName = tableName;

代码语言:javascript
复制
blk.DestinationTableName = "XXXX";

我得到了同样的错误,那么在使用WriteToServer时是否有关于如何命名临时表的规则?tableName的值是我用于直接INSERTSELECT COUNT(1)查询的值,所以我希望它是正确的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 07:26:13

根据我的经验,答案是否定的,您不能使用AseBulkCopy.WriteToServer填充临时表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27967462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档