Постоянная потенциальная потеря данных из-за ошибок при импорте CSV-файла Salesforce Dataloader с помощью инструмента импорта SQL

Я экспортировал список учетных записей из Salesforce, используя их инструмент Dataloader. Выходной файл представляет собой файл CSV. У меня есть таблица, в которую я хочу импортировать, уже создана. Я использовал nvarchar(255) для всех полей, но после того, как я продолжал получать ошибки усечения, я перешел на nvarchar(max).

Я использую инструмент импорта SQL и импортирую плоский файл. Я установил его с помощью " для квалификатора текста и разделил запятыми. Все выглядит хорошо. Затем, когда я перешел к импорту, я продолжал получать ошибки усечения почти в каждом поле.

Я вернулся и предложил тип, и он прочитал весь файл.

Я продолжал получать те же ошибки.

Я вернулся и изменил все на DT_STR с длиной 255, и тогда вместо ошибок усечения я получаю следующее:

- Executing (Error)
Messages
Error 0xc02020c5: Data Flow Task 1: Data conversion failed while converting column "BILLINGSTREET" (86) to column "BILLINGSTREET" (636).  The conversion returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
 (SQL Server Import and Export Wizard)

Error 0xc0209029: Data Flow Task 1: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[BILLINGSTREET]" failed because error code 0xC020907F occurred, and the error row disposition on "Data Conversion 0 - 0.Outputs[Data Conversion Output].Columns[BILLINGSTREET]" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
 (SQL Server Import and Export Wizard)

Error 0xc0047022: Data Flow Task 1: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Data Conversion 0 - 0" (552) failed with error code 0xC0209029 while processing input "Data Conversion Input" (553). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
 (SQL Server Import and Export Wizard)

Я вернулся СНОВА и изменил все на Stream Text. Сейчас он работает, но работает медленно. То, что раньше занимало меньше минуты, теперь займет, наверное, 2 часа.

К вашему сведению, я попытался импортировать csv в Excel, но он либо обрезает предшествующие нули, либо полностью портит синтаксический анализ.


person Dizzy49    schedule 18.05.2020    source источник
comment
Если ваш столбец nvarchar, почему вы используете DT_STR, а не DT_WSTR? Если DT_STR верно, то почему ваши столбцы не varchar?   -  person Larnu    schedule 18.05.2020
comment
@Lamu Две причины ... Во-первых, когда я впервые импортировал его через Excel, инструмент импорта создал таблицу с nvarchar. Я оставил его nvar char, потому что у меня было несколько полей, в которых требовалось более 400 символов, и есть множество полей с иностранными символами, поскольку мы работаем на международном уровне. Было проще сохранить nvarchar, чем пытаться выяснить, какие поля МОГУТ иметь иностранные символы.   -  person Dizzy49    schedule 19.05.2020
comment
@Lamu У меня также были float, double, boolean и т. д., но они продолжали выдавать мне ошибки преобразования. Я пошел с самым простым методом, который на самом деле РАБОТАЕТ. Не то, что ДОЛЖНО работать, но действительно работало.   -  person Dizzy49    schedule 19.05.2020
comment
Что вы имеете в виду, Excel выбрал их? Прежде чем вы сказали, что работаете с файлом CSV, это означает, что вы определяете типы данных, а не Excel (или, точнее, драйверы ACE). Файлы CSV и файлы xlsx совершенно разные. С другой стороны, текстовый файл в процессе импорта предполагает, что все данные DT_STR, и будет создано varchar столбцов. Это говорит мне о том, что вы должны использовать DT_WSTR, потому что у вас есть символы, которые в противном случае были бы потеряны, и почему вы получаете ошибку.   -  person Larnu    schedule 19.05.2020


Ответы (1)


В итоге я импортировал .csv как плоский файл, а не файл .xsl. В области «Дополнительно» я выделил все столбцы с правой стороны и выбрал DT_STR(255). Те несколько полей, которые были длиннее 255, я изменил на D_TEXT.

Это обходной путь, это не правильный способ сделать это, но правильный просто не работал из-за неверных данных в экспорте Salesforce. Как только я занес данные в базу данных, мне стало намного легче их просматривать, и я смог выявить неверные данные.

person Dizzy49    schedule 08.07.2020