点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)是否可以使用AseBulkCop...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)是否可以使用AseBulkCop...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
是否可以使用AseBulkCopy.WriteToServer填充临时表?
我在测试应用程序中两次调用了以下方法:首先使用非临时表,其次使用临时表。 该代码可以在非临时表上正常运行,但是在尝试填充临时表时出现错误:
','附近的语法不正确。
被提出。
在两种情况下,目标表和源表只有一列,定义为具有相同名称的INT。
我尝试使用DataTable和IDataReader作为数据源,并且都导致出现相同的错误。
我尝试在连接字符串中同时使用" EnableBulkLoad = 1"和" EnableBulkLoad = 2"。
我尝试同时使用原始临时表名称和以" dbo"为前缀的名称。
要加载的数据是单个int值(即1行,1列),尽管如果行较长或多行也将发生。
值得注意的是,我可以将数据插入到临时表中(使用AseCommand.ExecuteNonQuery),并且可以成功地从临时表中执行" SELECT COUNT(1)"(使用AseCommand.ExecuteScalar)。
这是代码:
私有静态无效BulkCopyInsertIntoTable(string tableName)
{
IDataReader dataSource = null;
SqlConnection sourceConnection = null;
MssqlCommand.GetDataReader(SqlServerConnectionString,out sourceConnection,out dataSource);
AseConnection targetConnection =新的AseConnection(SybaseConnectionString);
尝试
{
targetConnection.Open();
AseCommand cmd =新的AseCommand();
AseBulkCopy blk =新的AseBulkCopy(targetConnection);
blk.DestinationTableName = tableName;
//blk.ColumnMappings.Clear();
//blk.ColumnMappings.Add(new AseBulkCopyColumnMapping(0,0));//与数据源没有任何区别,导致数据表引发错误。
Console.WriteLine("将大副本插入表" + tableName +" ..starting:数据源");
//blk.WriteToServer(dataSource);
Console.WriteLine("将大副本插入表" + tableName +" ..starting:datatable");
blk.ColumnMappings.Clear();
DataTable dt = SybaseCommand.GetFakeDataTable(); ;
blk.WriteToServer(dt);
}
捕获(AseException ex)
{
Console.WriteLine(ex.Message);
}
最后
{
targetConnection.Dispose();
Console.WriteLine("将副本插入表" + tableName +" ..ended");
}
}
首先,可以使用WriteToServer填充临时表吗?
假设是这样,我可能做错了什么?
谢谢
嗨,
我正在尝试执行此线程的原始海报所执行的相同操作。
-打开数据库连接(打开会话)
-使用 ado.net 方法" ExecuteNonQuery"创建一个临时表
-使用" AseBulkCopy.WriteToServer"方法填充临时表。
-对临时表进行一些处理
-关闭数据库连接(关闭会话,删除临时数据库)
我正在运行的ASE数据库版本(在docker容器中运行)
Adaptive Server Enterprise/16.0 SP02 PL02/EBF 25320 SMP/P/x86_64/Enterprise Lin
ux/ase160sp02plx/2492/64-bit/FBO/Sat Nov 21 04:05:39 2015
我正在使用的 ADO.NET SDK的版本:SDK 16.0 SP03 PL04
这是有问题的代码的片段:
这是上面的代码生成的异常:
Sybase.Data.AseClient.AseException:','附近的语法不正确。
如果我将表名从" #accounts"更改为" accounts",则此代码有效。
我尝试按照此线程的建议更改DestinationTableName并收到以下错误
aseBulkCopy.DestinationTableName =" tempdb.dbo。#accounts";
生成以下异常:
找不到tempdb.dbo。#accounts00000510021882346。 指定owner.objectname或使用sp_help检查对象是否存在(sp_help可能会产生大量输出)。
我确实意识到这是一个非常古老的线程。但是请告知我我还能尝试什么。
一周热门 更多>