Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Tekst został obcięty lub jeden lub więcej znaków nie pasuje do docelowej strony kodowej Podczas importowania z pliku Excel

Zakładam, że próbujesz zaimportować to za pomocą źródła programu Excel w oknie dialogowym SSIS?

Jeśli tak, problem prawdopodobnie polega na tym, że SSIS pobiera próbkę pewnej liczby wierszy na początku arkusza kalkulacyjnego podczas tworzenia źródła programu Excel. Jeśli w kolumnie [ShortDescription] nie zauważy niczego zbyt dużego, domyślnie będzie to 255 znakowa kolumna tekstowa.

Tak więc, aby zaimportować dane z kolumny zawierającej wiersze z dużą ilością danych bez obcinania, istnieją dwie opcje:

  1. Należy upewnić się, że kolumna [ShortDescription] w co najmniej jednym z próbkowanych wierszy zawiera wartość dłuższą niż 255 znaków. Jednym ze sposobów na to jest użycie funkcji REPT(), np. =REPT('z', 4000), co utworzy ciąg 4000 litery 'z'.
  2. Aby uwzględnić taki wiersz, należy zwiększyć liczbę wierszy próbkowanych przez sterownik Jet Excel. Możesz zwiększyć liczbę próbkowanych wierszy, zwiększając wartość TypeGuessRows w obszarze HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel (jeśli twój system jest x64, to w HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel )klucz rejestru.

Więcej informacji znajdziesz pod tymi dwoma linkami:

Aby dokładniej wyjaśnić, SSIS tworzy 3 obiekty za kulisami kreatora, obiekt źródła danych programu Excel, obiekt docelowy tabeli SQL i operator przepływu danych między nimi. Obiekt źródłowy programu Excel definiuje dane źródłowe i istnieje niezależnie od pozostałych dwóch obiektów. Więc kiedy jest tworzony, próbkowanie, które opisałem, jest wykonane i rozmiar kolumny źródłowej jest ustawiony. Tak więc zanim operator przepływu danych wykona i spróbuje pobrać dane z programu Excel, aby umieścić je w tabeli, już patrzy na źródło danych, które jest ograniczone do 255 znaków.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj APP_NAME(), aby uzyskać nazwę aplikacji bieżącej sesji w SQL Server

  2. SQL Server 2008:usuń zduplikowane wiersze

  3. jaka jest różnica między indeksem klastrowym a indeksem unikalnym?

  4. tworzenie wyzwalaczy dla funkcji After Insert, After Update i After Delete w SQL

  5. Zmiana kolumny nvarchar na format daty