Вопрос по excel, sql-server – Ошибки усечения при импорте в SQL Server 2005 из Excel

15

Короче говоря, я беру кучу документов Excel по одному и импортирую их с помощью мастера импорта / экспорта в базу данных в SQL Server 2005.

Вот один отчет (все процессы, которые не показаны, являются «успешными»). Есть ли способ игнорировать ошибки усечения? Я погуглил безрезультатно, или, по крайней мере, не в моей версии.

<code>- Executing (Success)

- Copying to [Datadev].[dbo].[Sheet0$] (Error)
  Messages
  * Error 0xc020901c: Data Flow Task: There was an error with output
</code>

column "Value Meaning Description" (234) on output "Excel Source Output" (9). The column status returned was: "Text was truncated or one or more characters had no match in the target code page.". (SQL Server Import and Export Wizard)

<code>  * Error 0xc020902a: Data Flow Task: The "output column "Value
</code>

Meaning Description" (234)" failed because truncation occurred, and the truncation row disposition on "output column "Value Meaning Description" (234)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component. (SQL Server Import and Export Wizard)

<code>  * Error 0xc0047038: Data Flow Task: SSIS Error Code
</code>

DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "Source - Sheet0$" (1) returned error code 0xC020902A. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure. (SQL Server Import and Export Wizard)

<code>  * Error 0xc0047021: Data Flow Task: SSIS Error Code
</code>

DTS_E_THREADFAILED. Thread "SourceThread0" has exited with error code 0xC0047038. There may be error messages posted before this with more information on why the thread has exited. (SQL Server Import and Export Wizard)

<code>  * Error 0xc0047039: Data Flow Task: SSIS Error Code
</code>

DTS_E_THREADCANCELLED. Thread "WorkThread0" received a shutdown signal and is terminating. The user requested a shutdown, or an error in another thread is causing the pipeline to shutdown. There may be error messages posted before this with more information on why the thread was cancelled. (SQL Server Import and Export Wizard)

<code>  * Error 0xc0047021: Data Flow Task: SSIS Error Code
</code>

DTS_E_THREADFAILED. Thread "WorkThread0" has exited with error code 0xC0047039. There may be error messages posted before this with more information on why the thread has exited. (SQL Server Import and Export Wizard)

<code>- Post-execute (Success)
  Messages
  * Information 0x402090df: Data Flow Task: The final commit for the
</code>

data insertion has started. (SQL Server Import and Export Wizard)

<code>  * Information 0x402090e0: Data Flow Task: The final commit for the
</code>

data insertion has ended. (SQL Server Import and Export Wizard)

<code>- Cleanup (Success)
  Messages
  * Information 0x4004300b: Data Flow Task: "component "Destination -
</code>

Sheet0$" (323)" wrote 210 rows. (SQL Server Import and Export Wizard)

Ваш Ответ

7   ответов
0

как только вы попадете в раздел, где вам нужно указать файл, который вы используете для импорта данных, нажмите кнопку & quot; Дополнительно & quot; опции. Это покажет вам все поля во входном файле вместе со свойствами полей. Свойство, которое нужно изменить, - «DataType». Обычно по умолчанию это «строка [DT_STR]». Если вы измените его на & quot; текстовый поток [DT_TEXT] & quot; Вы существенно увеличите размер поля и, следовательно, скорее всего избежите ошибки усечения.

1

CSV или текстовых данных в SQL Server, где возникают ошибки усечения, я бы предложил сначала импортировать данные в MS Access, а затем с помощью мастера изменения размера создать и заполнить таблицу непосредственно в SQL.

5

Здесь & APOS; s что сработало для меня.

This is due to a wonderful setting within Excel in your registry that tells it to only check the first 8 rows of data within your spreadsheet to determine the column size for the remainder of all the data. The fix for this is to modify your registry to set it from 8 to 0. When it’s set to 0 it will check the entire spreadsheet. This may cause some performance issues during the initial data import if the file is extremely large. Here is the the registry key to search for (there may be more than one that needs to be set):

TypeGuessRows

Error: User Rate Limit Exceeded
8

char для данных Excel, чем тот, который вы получили в мастере в SQL Server 2000. В результате он часто усекает данные, которые вы пытаетесь выполнить для быстрого импорта в промежуточную таблицу. Однако, когда вы запустите мастер, один экран спросит вас, хотите ли вы редактировать сопоставления, и вы можете установить размер полей там. Или вы можете использовать сначала создание таблицы для создания рабочей таблицы с нужными размерами (nvarchar (max) хорошо, если вы просматриваете данные в первый раз и не знаете, насколько большими будут поля), а затем импортируете внутрь. В Excel я знаю, что у меня также были проблемы с SQl Server, использующим только несколько строк для определения типа данных, а затем вставка не удалась для записей (скажем, для чего-то вроде partnumber), потому что он думал, основываясь на первых нескольких записях, что это целое число, был действительно строковый тип данных. У вас также может быть такая проблема, поэтому в любом случае рекомендуется просмотреть сопоставления, даже если вы не получили ошибок усечения.

Error: User Rate Limit Exceeded
4

http://support.microsoft.com/kb/281517

Чтобы изменить значение TypeGuessRows, используйте эти шаги: 1.В меню «Пуск» нажмите «Выполнить». В диалоговом окне «Выполнить» введите Regedt32 и нажмите кнопку «ОК». 2. Откройте следующий ключ в редакторе реестра:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel

Примечание. Для 64-битных систем соответствующий ключ:

HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ струйного \ 4.0 \ Engines \ Excel 3. Дважды щелкните TypeGuessRows. 4.В диалоговом окне редактора DWORD нажмите «Десятичное число» в разделе «База». Введите значение от 0 до 16 включительно для значений данных. 5.Нажмите ОК, а затем закройте редактор реестра. Второй способ обойти эту проблему (без изменения реестра) - убедиться, что строки с полями, которые имеют данные размером 255 или более, присутствуют в первых 8 строках исходного файла данных.

Error: User Rate Limit Exceeded
1

ь их?

В любом случае, если вам нужно сделать больше, чем предоставляет мастер, вам следует использовать SSIS (службы интеграции SQL Server) напрямую. Это означает, что использует мастер, только он не может предположить, что ошибки в порядке.

Очень просто написать пакет служб SSIS для зацикливания ваших файлов Excel и импортировать их по одному за раз. Поток данных импорта может быть настроен либо на игнорирование ошибок, либо на что-то другое, например, сообщает о них.

Error: User Rate Limit ExceededorError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded scrot
15

я вставляю 8 фиктивных строк. В каждой ячейке есть нежелательный текст длиной & gt; 256. Это заставляет обнаруженный тип данных быть varchar (max) вместо varchar (256). Если строка является числовым столбцом, я должен заполнить ее числом (например, 0), а если это дата, я должен заполнить фиктивную дату, иначе столбцы будут импортированы с нулевыми данными.

Затем я удаляю эти ненужные строки после импорта.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы