Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OracleBulkCopy from CSV-无法插入空列具有值_C#_Oracle_Csv_Oracle10g_Bulkinsert - Fatal编程技术网

C# OracleBulkCopy from CSV-无法插入空列具有值

C# OracleBulkCopy from CSV-无法插入空列具有值,c#,oracle,csv,oracle10g,bulkinsert,C#,Oracle,Csv,Oracle10g,Bulkinsert,我正在使用OracleBlukCopy将一个巨大的CSV文件转储到数据库表中。这是我正在使用的代码。当我运行这个程序时,我得到一个错误,说不能将NULL插入TBL_COL1,但是我的CSV有TBL_COL1的值 经过研究,我得出结论,当TBL_COL1中有字符时,这是一个错误。知道为什么吗 DataTable datatable = TranslateCSVFileToDataTable(); using (OracleConnection connectiontodb = new Oracl

我正在使用OracleBlukCopy将一个巨大的CSV文件转储到数据库表中。这是我正在使用的代码。当我运行这个程序时,我得到一个错误,说不能将NULL插入TBL_COL1,但是我的CSV有TBL_COL1的值

经过研究,我得出结论,当TBL_COL1中有字符时,这是一个错误。知道为什么吗

DataTable datatable = TranslateCSVFileToDataTable();

using (OracleConnection connectiontodb = new OracleConnection(databaseconnectionstring))
{
    connectiontodb.Open();
    using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
    {
        copytothetable.ColumnMappings.Add("TBL_COL1", "TBL_COL1"); 
        copytothetable.ColumnMappings.Add("TBL_COL2", "TBL_COL2"); 
        copytothetable.ColumnMappings.Add("TBL_COL3", "TBL_COL3"); 
        copytothetable.DestinationTableName = "DESTINATION_TABLE";
        copytothetable.WriteToServer(datatable);
    }
}


CREATE TABLE DESTINATION_TABLE
(
  TBL_COL1                   VARCHAR2(32) not null,
  TBL_COL2                   DATE not null,
  TBL_COL3                   DATE not null,
)


98987987987987987,6/23/2014,7/23/2014
98987987987987987,7/23/2014,8/21/2014
98987987987987987,8/21/2014,9/22/2014
98987987987987987,9/22/2014,10/21/2014
98987987987987987,10/21/2014,11/20/2014
98987987987987987,11/20/2014,12/22/2014
656666666666666ABC1234,1/8/2014,1/9/2014
656666666666666ABC1234,1/9/2014,2/9/2014
656666666666666ABC1234,2/9/2014,3/9/2014
656666666666666ABC1234,3/9/2014,4/7/2014
656666666666666ABC1234,4/7/2014,5/7/2014
656666666666666ABC1234,5/7/2014,6/8/2014
656666666666666ABC1234,6/8/2014,7/8/2014
656666666666666ABC1234,7/8/2014,8/7/2014
656666666666666ABC1234,8/7/2014,9/8/2014
656666666666666ABC1234,9/8/2014,10/7/2014
656666666666666ABC1234,10/7/2014,11/9/2014
656666666666666ABC1234,11/9/2014,12/7/2014
777777777777777XYZ1234,5/7/2014,6/8/2014
777777777777777XYZ1234,6/8/2014,7/8/2014
777777777777777XYZ1234,7/8/2014,8/7/2014
777777777777777XYZ1234,8/7/2014,9/8/2014
777777777777777XYZ1234,9/8/2014,10/7/2014
777777777777777XYZ1234,10/7/2014,11/9/2014
777777777777777XYZ1234,11/9/2014,12/7/2014

您必须创建与目标_表列类似的Datatable列,然后进行列映射

DataTable datatable;
            datatable = new DataTable("temptable");
            datatable.Columns.Add("TBL_COL1 ");
            datatable.Columns.Add("TBL_COL2 ");
            datatable.Columns.Add("TBL_COL3");
using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
{
   copytothetable .DestinationTableName = "DESTINATION_TABLE";
   foreach (DataRow row in table.Rows)
   {
      foreach (DataColumn col in datatable.Columns)
      {
         if (row[col] != DBNull.Value)
         {
            copytothetable.ColumnMappings.Add(col.ColumnName, col.ColumnName);
          }
       }
    }
    copytothetable.WriteToServer(datatable);
}

您必须创建与目标_表列类似的Datatable列,然后进行列映射

DataTable datatable;
            datatable = new DataTable("temptable");
            datatable.Columns.Add("TBL_COL1 ");
            datatable.Columns.Add("TBL_COL2 ");
            datatable.Columns.Add("TBL_COL3");
using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
{
   copytothetable .DestinationTableName = "DESTINATION_TABLE";
   foreach (DataRow row in table.Rows)
   {
      foreach (DataColumn col in datatable.Columns)
      {
         if (row[col] != DBNull.Value)
         {
            copytothetable.ColumnMappings.Add(col.ColumnName, col.ColumnName);
          }
       }
    }
    copytothetable.WriteToServer(datatable);
}

您必须创建与目标_表列类似的Datatable列,然后进行列映射

DataTable datatable;
            datatable = new DataTable("temptable");
            datatable.Columns.Add("TBL_COL1 ");
            datatable.Columns.Add("TBL_COL2 ");
            datatable.Columns.Add("TBL_COL3");
using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
{
   copytothetable .DestinationTableName = "DESTINATION_TABLE";
   foreach (DataRow row in table.Rows)
   {
      foreach (DataColumn col in datatable.Columns)
      {
         if (row[col] != DBNull.Value)
         {
            copytothetable.ColumnMappings.Add(col.ColumnName, col.ColumnName);
          }
       }
    }
    copytothetable.WriteToServer(datatable);
}

您必须创建与目标_表列类似的Datatable列,然后进行列映射

DataTable datatable;
            datatable = new DataTable("temptable");
            datatable.Columns.Add("TBL_COL1 ");
            datatable.Columns.Add("TBL_COL2 ");
            datatable.Columns.Add("TBL_COL3");
using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
{
   copytothetable .DestinationTableName = "DESTINATION_TABLE";
   foreach (DataRow row in table.Rows)
   {
      foreach (DataColumn col in datatable.Columns)
      {
         if (row[col] != DBNull.Value)
         {
            copytothetable.ColumnMappings.Add(col.ColumnName, col.ColumnName);
          }
       }
    }
    copytothetable.WriteToServer(datatable);
}

您可以尝试oracle事务提交。也许这对你有帮助

using (OracleConnection connectiontodb = new OracleConnection(databaseconnectionstring))
    {
        connectiontodb.Open();
        using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
        {
    OracleTransaction tran = connectiontodb.BeginTransaction(IsolationLevel.ReadCommitted);
          try
          {
            copytothetable.ColumnMappings.Add("TBL_COL1", "TBL_COL1"); 
            copytothetable.ColumnMappings.Add("TBL_COL2", "TBL_COL2"); 
            copytothetable.ColumnMappings.Add("TBL_COL3", "TBL_COL3"); 
            copytothetable.DestinationTableName = "DESTINATION_TABLE";
            copytothetable.WriteToServer(datatable);
            tran.Commit();
          }
          catch
          {
            tran.Roolback();
          }
        }
    }

您可以尝试oracle事务提交。也许这对你有帮助

using (OracleConnection connectiontodb = new OracleConnection(databaseconnectionstring))
    {
        connectiontodb.Open();
        using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
        {
    OracleTransaction tran = connectiontodb.BeginTransaction(IsolationLevel.ReadCommitted);
          try
          {
            copytothetable.ColumnMappings.Add("TBL_COL1", "TBL_COL1"); 
            copytothetable.ColumnMappings.Add("TBL_COL2", "TBL_COL2"); 
            copytothetable.ColumnMappings.Add("TBL_COL3", "TBL_COL3"); 
            copytothetable.DestinationTableName = "DESTINATION_TABLE";
            copytothetable.WriteToServer(datatable);
            tran.Commit();
          }
          catch
          {
            tran.Roolback();
          }
        }
    }

您可以尝试oracle事务提交。也许这对你有帮助

using (OracleConnection connectiontodb = new OracleConnection(databaseconnectionstring))
    {
        connectiontodb.Open();
        using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
        {
    OracleTransaction tran = connectiontodb.BeginTransaction(IsolationLevel.ReadCommitted);
          try
          {
            copytothetable.ColumnMappings.Add("TBL_COL1", "TBL_COL1"); 
            copytothetable.ColumnMappings.Add("TBL_COL2", "TBL_COL2"); 
            copytothetable.ColumnMappings.Add("TBL_COL3", "TBL_COL3"); 
            copytothetable.DestinationTableName = "DESTINATION_TABLE";
            copytothetable.WriteToServer(datatable);
            tran.Commit();
          }
          catch
          {
            tran.Roolback();
          }
        }
    }

您可以尝试oracle事务提交。也许这对你有帮助

using (OracleConnection connectiontodb = new OracleConnection(databaseconnectionstring))
    {
        connectiontodb.Open();
        using (OracleBulkCopy copytothetable = new OracleBulkCopy(connectiontodb))
        {
    OracleTransaction tran = connectiontodb.BeginTransaction(IsolationLevel.ReadCommitted);
          try
          {
            copytothetable.ColumnMappings.Add("TBL_COL1", "TBL_COL1"); 
            copytothetable.ColumnMappings.Add("TBL_COL2", "TBL_COL2"); 
            copytothetable.ColumnMappings.Add("TBL_COL3", "TBL_COL3"); 
            copytothetable.DestinationTableName = "DESTINATION_TABLE";
            copytothetable.WriteToServer(datatable);
            tran.Commit();
          }
          catch
          {
            tran.Roolback();
          }
        }
    }

您的csv中可能有空行吗?是否尝试调试数据表…检查数据表是否有任何值。@Politank-Z在控件中尾随空列file@prasydatatable有值您的csv中有空行吗?是否尝试调试datatable…检查datatable是否有值。@Politank-Z控件中的尾随空file@prasydatatable有值您的csv中有空行吗?是否尝试调试datatable…检查datatable是否有值。@Politank-Z在控件中尾随NULLCOLSfile@prasydatatable已获取值。您的csv中有空行吗?是否尝试调试datatable…检查datatable是否有任何值。@Politank-Z在控件中跟踪空值file@prasydatatable已获得值