一尘不染

无法序列化数据表。未设置数据表名称

sql

我需要将所有数据表导出到单个XML文件,并且如果有巨大的表,由于System.OutOfMemoryException,因此无法一次导出所有行。所以我试图导出N行。但是,如果我在查询中使用分页语法,则WriteXml会引发异常。

我已经在LINQPad中测试了这两个查询,它们还可以。

System.InvalidOperationException:无法序列化DataTable。未设置数据表名称。

  // The first query causes exception
  string oraQueryGetTableData = "SELECT * FROM (SELECT t0.* FROM MY_TABLE t0) WHERE ROWNUM <= 100";

  // The second query runs without any error
  //oraQueryGetTableData = "SELECT * FROM MY_TABLE";

  OracleCommand oraCommandGetTableData = new OracleCommand(oraQueryGetTableData, oraConnection);

  OracleDataReader oraReaderTableData = oraCommandGetTableData.ExecuteReader();

  DataTable dataTable = new DataTable();
  dataTable.Load(oraReaderTableData);

  // Exception might occur here
  dataTable.WriteXml(writer, true);

这是什么问题,或者我该如何解决?


阅读 128

收藏
2021-05-23

共1个答案

一尘不染

如异常所示-该表未设置其TableName属性。因此,您只需要设置它。

DataTable dataTable = new DataTable { TableName = "MyTableName"};
dataTable.Load(oraReaderTableData);
....
2021-05-23