【问题标题】:OracleBulkCopy error (table or view does not exist)OracleBulkCopy 错误(表或视图不存在)
【发布时间】:2013-12-17 17:36:02
【问题描述】:

我正在尝试使用 OracleBulk Copy 将数据表从 sql server 复制到 oracle。但是我收到以下错误:

ORA-00942: 表或视图不存在

对于orca_bulk_copy.WriteToServer(dt);这一行。

代码如下:

string sqlstring = "select POSITION_ID, POSITION_DESC  from T_CD_POSITION";
SqlDataAdapter o_SQLDataAdaptor = new SqlDataAdapter(sqlstring, sqlconn);
DataTable dt = new DataTable();
o_SQLDataAdaptor.Fill(dt);

//SqlCommand scmd = new SqlCommand(sqlstring, sqlconn);
//SqlDataReader reader = scmd.ExecuteReader();

foreach (DataRow row in dt.Rows)
{
    OracleConnection oraconn = new OracleConnection(oradb);
    oraconn.Open();
    Console.WriteLine("orca conn established....");


    OracleBulkCopy orca_bulk_copy = new OracleBulkCopy(oraconn);

    orca_bulk_copy.DestinationTableName = "UHAMPTST.t_test_postion";
    orca_bulk_copy.BatchSize = 5000;
    orca_bulk_copy.BulkCopyTimeout = 10000;
    Console.WriteLine("hh");
    orca_bulk_copy.ColumnMappings.Add("position_id", "position_id");

    orca_bulk_copy.ColumnMappings.Add("position_desc", "position_desc");
    orca_bulk_copy.WriteToServer(dt); // <----- ORA-00942 error occurs here!!
    Console.WriteLine("hhdd");
    orca_bulk_copy.Close();
    orca_bulk_copy.Dispose();

我确实试图找出为什么会出现这个错误,但没有得到足够的信息。

【问题讨论】:

  • 在线发布用户名和密码是个坏主意。
  • 如错误提示的那样,您的源表和目标表是否存在?
  • @Colin'tHart 是的

标签: sql .net oracle


【解决方案1】:

ORA-00942 - Table does not exists error,主要错误之一,任何 SQL 开发新手都会面临。请检查以下内容。

1) 当您不引用名称为SCHEMA 的表时,请检查是否存在PUBLIC SYNONYM。如果没有,或者您不能拥有公共同义词,则您必须明确指定架构名称作为表的前缀,否则您用于连接数据库的 USER_ID 具有对该架构的默认访问权限。

2) 检查您是否拥有来自您尝试选择的表的SELECT 权限以及您尝试复制到的表的INSERT/UPDATE 权限。

【讨论】:

  • 我可以轻松地选择值并将其插入表中。我确实使用了模式名称。但我也尝试使用同义词。
  • 好的,您可能还需要确认应用程序使用的数据库用户 ID,以仔细检查该用户 ID 是否可以访问该表。
  • 是的,该表是可访问的。问题是当我使用命令 WriteToServer(DataTable dt) 时它会抛出一个异常,说表或视图不存在。
猜你喜欢
  • 2012-03-30
  • 2015-05-30
  • 2011-06-22
  • 1970-01-01
  • 2013-04-14
  • 2015-09-16
  • 2019-09-29
  • 1970-01-01
相关资源
最近更新 更多