通过OLEDB从.net数据集插入表数据到SAS数据文件

本文关键字:数据 SAS 文件 插入 OLEDB net 数据集 通过 | 更新日期: 2023-09-27 18:04:07

我有一个包含一个数据表的数据集(System.Data.DataSet)的c# . net代码,我试图在SAS服务器上创建一个新的SAS数据表,然后使用c#将数据推入其中。

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

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

但是它认为exportData表名应该是SAS库名。当搜索网络时,我得到的只是从SAS中取出数据的例子,这很容易使用TableDirect命令类型和OLEDB填充方法。要逆转这个过程似乎不那么容易。

注意:我使用的是sas。IOMProvider provider在我的connectionstring.

感谢

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

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

我仍然有麻烦加载日期到一个新的SAS表使用SQL INSERT子句(见上面的代码)。不知道应该怎么格式化。源表(exportTable)中的时间值是DateTime对象,因此强制转换是有效的。

通过OLEDB从.net数据集插入表数据到SAS数据文件

而不是试图从数据集做一个INSERT,你可以从相反的方向做它作为一个EXPORT到表(SASUSER.tablename)?

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