Il testo è stato troncato o uno o più caratteri non avevano corrispondenza nella tabella codici di destinazione Durante l’importazione dal file Excel

Ho un file excel con quattro colonne di testo: una di queste è chiamata ShortDescription che ha il valore più lungo. Ho creato una tabella nel database di SQL Server 2008, con quattro colonne e il tipo di colonna ShortDescription è impostato su NvarChar (Max).

ma quando si utilizza la finestra di dialogo Importa ed esporta SSIS, continuo a ricevere l’errore menzionato nel titolo, anche quando imposto l’opzione OnTruncation su Ignora.

Ho provato a cancellare i dati della colonna e ci sono riuscito (quindi mi sono assicurato che il problema fosse nella colonna ShortDescription). Ho provato a copiare tutti i dati in un altro libro di lavoro eccellente, e ancora senza fortuna.

qualche idea ???

Immagino tu stia cercando di importarlo usando una sorgente Excel nella finestra di dialogo SSIS?

In tal caso, probabilmente il problema è che SSIS campiona un certo numero di righe all’inizio del foglio di calcolo quando crea l’origine Excel. Se nella colonna [ShortDescription] non si nota nulla di troppo grande, verrà impostato automaticamente su una colonna di testo di 255 caratteri.

Quindi, per importare i dati da una colonna che contiene righe con grandi quantità di dati senza troncamento, ci sono due opzioni:

  1. È necessario assicurarsi che la colonna [ShortDescription] in almeno una delle righe campionate contenga un valore superiore a 255 caratteri. Un modo per farlo è usare la funzione REPT (), ad esempio = REPT (‘z’, 4000), che creerà una stringa di 4000 della lettera ‘z’.
  2. È necessario aumentare il numero di righe campionate dal driver Jet Excel per includere una riga di questo tipo. È ansible aumentare il numero di righe campionate aumentando il valore di TypeGuessRows sotto HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel (di se il proprio sistema è x64 quindi in HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel ) chiave di registro.

Puoi vedere maggiori informazioni su questi due link:

Per spiegare ulteriormente, SSIS crea 3 oggetti dietro le quinte della procedura guidata, un object di origine dati Excel, un object di destinazione tabella SQL e un operatore di stream di dati tra di loro. L’object di origine Excel definisce i dati di origine ed esiste indipendentemente dagli altri due oggetti. Quindi, quando viene creato, il campionamento che ho descritto viene eseguito e viene impostata la dimensione della colonna di origine. Quindi, quando l’operatore del stream di dati esegue e tenta di estrarre i dati da Excel per inserirli nella tabella, sta già esaminando un’origine dati che è stata limitata a 255 caratteri.

Ho riscontrato questo problema durante l’importazione da un file piatto delimitato in SQL Server. La soluzione era di aggiornare il valore “OutputColumnWidth” per la colonna all’origine di errore (dal messaggio di errore). Nel modulo “Scegli una fonte di dati” nella procedura guidata di importazione, la mia fonte era il file piatto. Nel riquadro più a sinistra, seleziona “Avanzate”. È quindi ansible impostare le proprietà di singole colonne. Nel mio caso, “OutputColumnWidth” per la maggior parte delle mie colonne era impostato su “50”. L’ho semplicemente aggiornato ad un valore più grande che non avrebbe troncato il valore dal file flat.

inserisci la descrizione dell'immagine qui

Un modo semplice per farlo funzionare è modificare il file che si desidera importare e creare una nuova riga nel primo punto. In questo modo sarà sempre campionato. Quindi per tutte le colonne che possono contenere> 255 caratteri, aggiungi 255 caratteri alla cella e funzionerà. Dopo aver importato, elimina semplicemente la riga di posta indesiderata che hai aggiunto.

Ho ricevuto questo errore quando stavo cercando di importare un file di grandi dimensioni che conteneva alcuni caratteri cinesi e anche alcune stringhe non valide (grandi).

Il file di testo è stato salvato nel formato UTF8.

Le mie impostazioni:

Sull’opzione generale (non ha modificato nulla):

 - Locale: English (United States) - Unicode: Unchecked - Code Page: 65001 (UTF-8) 

C’è un’opzione avanzata a sinistra

 - DataType (for column): Unicode String [DT_WSTR] (changed) - OutputColumnWidth: 4000 (that's the maximum) (changed) 

Sulla Revisione Mappatura dei tipi di dati

 - On Error: Ignore - On Truncation: Ignore 

La mia colonna objective aveva larghezza = 50.

Non ho avuto errori con queste impostazioni.

C’è una posizione alternativa del componente del Registro di sistema che deve essere modificato per risolvere questo problema.

Se non riesci a trovarlo a

Start-> Esegui-> RegEdit-> HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel

quindi guarda dentro

Start-> RUN-> RegEdit-> HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Jet -> 4.0 -> Motori -> Excel

Per me questo link mi ha aiutato: https://support.microsoft.com/en-us/kb/189897

  1. Copia la riga che ha un valore di cella> 255 caratteri all’inizio dell’eccel, crea quella riga nella prima riga di Excel
  2. cambia il valore del registro dal link precedente.