Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zignorować zduplikowane wiersze podczas wstawiania?

Opcja stylu bazy danych

Hibernate nie oferuje dodawania opcji do jego insert into sprawozdania. I nie wiem, czy ta sama opcja jest dostępna dla MS SQL.

Ale jeśli znajdziesz taką opcję, możesz przechwycić instrukcję INSERT i dodać ją samodzielnie:

public class IgnoreRowOnDupInterceptor extends EmptyInterceptor {

  public String onPrepareStatement(String sql) {
    if (sql.startsWith("insert into avaya_cm_cdr") {
      return sql.replace("insert into", 
        "insert /*+ ignore_row_on_dupkey_index(avaya_cm_cdr, i_avaya_cm_cdr_nodub) */ into");
    }
    return sql;
  }

} 

Musisz zadeklarować ten przechwytywacz w swoim persistence.xml :

<property name="hibernate.ejb.interceptor" value="...IgnoreRowOnDupInterceptor" />

Opcja stylu JPA

Możesz zapamiętać ostatnią linię z ostatniego parsowania (lub pobrać ją z bazy danych) i pominąć plik do tej linii. W takim przypadku zaoszczędzisz nawet czas na ponowne parsowanie każdego istniejącego elementu.

Z mojego punktu widzenia jest to sposób JPA, ponieważ zwykle używasz bazy danych tylko jako magazynu i zachowujesz logikę biznesową w aplikacji (Java).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. data tabeli przestawnej mysql (dane od pionu do poziomu)

  2. zwróć oryginalny numer wiersza mySQL

  3. MySQL:czy możliwe jest group_concat wiele wierszy?

  4. Jak bezpiecznie i wydajnie uzyskać identyfikator wiersza po wstawieniu z mysql przy użyciu MySQLdb w pythonie?

  5. Pełne przywracanie klastra MySQL lub MariaDB Galera z kopii zapasowej