通过 Sas 本地提供商枚举表

问题描述 投票:0回答:2

我的任务涉及使用 .NET 读取 SAS .xpt 文件。为此,我使用

sas.LocalProvider
,它允许我读取 .xpt 文件。唯一的问题是我需要提供我想要从中获取数据的表名。这种方法是不可接受的,因为表名称可能会有所不同(尽管文件中只存在一个)并且用户不知道该名称。它们是读取 .xpt 文件中可用表的方法吗?或者获取默认的第一个表?我尝试使用
OleDbConnection.GetSchema()
但这没有给我提供有关表格的信息。下面我粘贴了我正在使用的示例代码:

var cn = new OleDbConnection();
cn.ConnectionString = @"Provider=sas.LocalProvider; Data Source=test.xpt; SAS File Format=XPT";
cn.Open();
var cmd = cn.CreateCommand();
cmd.CommandType = CommandType.;
cmd.CommandText = "SAS";
var oleDa = new OleDbDataAdapter(cmd);
var ds = new DataSet();
oleDa.Fill(ds, "SAS");
.net sas
2个回答
1
投票

好的,我成功了。因为 SAS xpt 文件头是恒定的,所以我能够使用二进制读取器从中读取表名。每个头记录有80字节。表名共 6 条记录(包括头标签记录),前面有 8 个字节。因此第一个表名位于字节 408-415(8 字节长)。 这段小代码将为您提供第一个表名称:

        var streamReader = new FileStream(filePath, FileMode.Open);
        var buffer = new byte[8];
        streamReader.Position = 408;
        streamReader.Read(buffer, 0, 8);
        streamReader.Close();

字符串firstTableName = Encoding.UTF8.GetString(bytes, 0, bytes.Length);


0
投票

最好能够更自动地检索所有可用的表,而不是硬编码值等。

© www.soinside.com 2019 - 2024. All rights reserved.