OracleBulkCopy错误

时间:2013-12-17 17:36:02

标签: sql .net oracle

我试图使用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();

我确实试图找出为什么会出现这个错误,但没有得到足够的信息。 请提供一些建议。 需要帮助asap

1 个答案:

答案 0 :(得分:0)

ORA-00942 - Table does not exists error,主要错误之一,任何新手SQL面对的人。请检查以下内容。

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

2)检查您尝试选择的表中是否具有SELECT权限,并检查您尝试复制到的表的INSERT/UPDATE权限。