通过OLEDB将.NET数据集中的表数据插入SAS数据文件

时间:2011-07-29 01:30:22

标签: c# .net sql oledb sas

我的C#.NET代码包含一个包含一个数据表的DataSet(System.Data.DataSet),我正在尝试在SAS服务器上创建一个新的SAS数据表,然后使用C#将数据推入其中

现在,我可以在SAS服务器上创建新表,但我不确定如何传输数据。我尝试使用这个insert命令(exportData是DataSet):

"INSERT INTO SASUSER." + SAStableName + " SELECT * FROM " + exportData.Tables[0].TableName

但它认为exportData表名应该是SAS库名。我在搜索网页时得到的只是从SAS获取数据的示例,使用TableDirect命令类型和OLEDB填充方法很容易。反转过程似乎并不那么容易。

注意:我在我的connectionstring中使用了sas.IOMProvider提供程序。

由于

编辑:经过我一直在做的所有搜索,我认为你不能真的这样做。我尝试使用SQL参数化,但SAS提供商不支持。我最终决定使用一个简单的for循环来添加值,因为我的所有源表和目标表都包含相同的列。半伪代码:

DateTime time = (System.DateTime)exportTable.Rows[i]["time"];
object value = exportTable.Rows[i]["value"];
"INSERT INTO SASUSER." + tableName + " (time, value) VALUES (" + time.Ticks + " , " + value + ")"

我仍然无法使用SQL INSERT子句将日期加载到新的SAS表中(请参阅上面的代码)。不确定它们应该如何格式化。源表(exportTable)中的时间值是DateTime对象,因此强制转换是有效的。

1 个答案:

答案 0 :(得分:0)

不是尝试从数据集中将其作为INSERT来进行,而是可以从相反的方向处理它作为EXPORT到表(SASUSER.tablename)吗?

http://support.sas.com/documentation/cdl/en/acpcref/63184/HTML/default/viewer.htm#a003102702.htm