2015-03-08 4 views
0
INSERT INTO [std_Receipt] 
      ([rcp_GUID] 
      ,[rcp_Date] 
      ,[rcp_Check_No] 
      ,[rcp_Amount] 
      --,[rcp_InterestRate] 
      ,[rcp_Purpose] 
      ,[rcp_Deposited] 
      ,[rcp_Statement] 
      ,[rcp_Note] 
      ,[rcp_State] 
      ,[rcp_Reconciled] 
      ,[rcp_ForceItemize] 
      ,[rcp_ForceUnitemize] 
      ,[rcp_per_GUID] 
      ,[rcp_rcs_GUID] 
      ,[rcp_sou_GUID] 
      ,[rcp_chs_GUID] 
      ,[rcp_acc_GUID] 
      ,[rcp_bat_GUID] 
      ,[rcp_FecId] 
      ,[rcp_TransId] 
      --,[rcp_rlv_GUID] 
      --,[rcp_let_GUID_ThankYou] 
      --,[rcp_let_GUID_Compliance] 
      --,[rcp_ple_GUID] 
      --,[rcp_link_GUID] 
      ,[rcp_Deleted] 
      ,[rcp_CreatedOn] 
      ,[rcp_CreatedBy] 
      --,[rcp_UpdatedOn] 
      --,[rcp_UpdatedBy] 
      --,[rcp_DeletedOn] 
      --,[rcp_DeletedBy] 
      ,[rcp_Support] 
      ,[rcp_Oppose] 
      ,[rcp_SourceId] 
      --,[rcp_DueDate] 
      --,[rcp_MatchingFundsSequence] 
      --,[rcp_receivedDate] 
      ,[rcp_ReceivedYear] 
      --,[rcp_TransferAmount] 
      --,[rcp_YearPart] 
      --,[rcp_AmendmentCode] 
      ,[rcp_Locked] 
      --,[rcp_LockedOn] 
      --,[rcp_FillingId] 
      --,[rcp_FillingDate] 
      --,[rcp_pmt_GUID] 
      --,[rcp_IsValid] 
      --,[rcp_ReceivedBy_GUID] 
      --,[rcp_ReceiptableAmount] 
      --,[rcp_isNonReceiptable] 
      --,[rcp_ReceiptSentDate] 
      ) 
    select 
      rcpguid,--(<rcp_GUID, uniqueidentifier,> 
      date,--,<rcp_Date, datetime,> 
      isnull(check_no,''),--,<rcp_Check_No, nvarchar(50),> 
      amount,--,<rcp_Amount, money,> 
      --,<rcp_InterestRate, decimal(9,6),> 
      isnull(note,''),--,<rcp_Purpose, nvarchar(250),> 
      deposited,--,<rcp_Deposited, datetime,> 
      deposited,--,<rcp_Statement, datetime,> 
      '',--,<rcp_Note, ntext,> 
      '',--,<rcp_State, nchar(2),> 
      0,--,<rcp_Reconciled, bit,> 
      0,--,<rcp_ForceItemize, bit,> 
      CASE WHEN [type] = 'Unitemized' THEN 1 ELSE 0 END,--,<rcp_ForceUnitemize, bit,> 
      perguid,--,<rcp_per_GUID, uniqueidentifier,> 
      rcsguid,--,<rcp_rcs_GUID, uniqueidentifier,> 
      souguid,--,<rcp_sou_GUID, uniqueidentifier,> 
      chsguid,--,<rcp_chs_GUID, uniqueidentifier,> 
      accguid,--,<rcp_acc_GUID, uniqueidentifier,> 
      batguid,--,<rcp_bat_GUID, uniqueidentifier,> 
      '',--,<rcp_FecId, nvarchar(20),> 
      '',--,<rcp_TransId, nvarchar(20),> 
      --,<rcp_rlv_GUID, uniqueidentifier,> 
      --,<rcp_let_GUID_ThankYou, uniqueidentifier,> 
      --,<rcp_let_GUID_Compliance, uniqueidentifier,> 
      --,<rcp_ple_GUID, uniqueidentifier,> 
      --,<rcp_link_GUID, uniqueidentifier,> 
      0,--,<rcp_Deleted, bit,> 
      getdate(),--,<rcp_CreatedOn, datetime,> 
      '00000000-0000-0000-0000-000000000000',--,<rcp_CreatedBy, uniqueidentifier,> 
      --,<rcp_UpdatedOn, datetime,> 
      --,<rcp_UpdatedBy, uniqueidentifier,> 
      --,<rcp_DeletedOn, datetime,> 
      --,<rcp_DeletedBy, uniqueidentifier,> 
      0,--,<rcp_Support, bit,> 
      0,--,<rcp_Oppose, bit,> 
      'CM:'+cast(keyid as nvarchar),--,<rcp_SourceId, nvarchar(10),> 
      --,<rcp_DueDate, datetime,> 
      --,<rcp_MatchingFundsSequence, bigint,> 
      --,<rcp_receivedDate, datetime,> 
      year(date),--,<rcp_ReceivedYear, varchar(4),> 
      --,<rcp_TransferAmount, money,> 
      --,<rcp_YearPart, int,> 
      --,<rcp_AmendmentCode, nvarchar(3),> 
      0--,<rcp_Locked, bit,> 
      --,<rcp_LockedOn, datetime,> 
      --,<rcp_FillingId, nvarchar(30),> 
      --,<rcp_FillingDate, datetime,> 
      --,<rcp_pmt_GUID, uniqueidentifier,> 
      --,<rcp_IsValid, bit,> 
      --,<rcp_ReceivedBy_GUID, uniqueidentifier,> 
      --,<rcp_ReceiptableAmount, money,> 
      --,<rcp_isNonReceiptable, bit,> 
      --,<rcp_ReceiptSentDate, datetime,>) 
    from i_contfile 

Ok Я получаю сообщение об ошибке:типа данных NVARCHAR для DATETIME

The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.

Но довольно простой набор вверх, что я делаю вставку из моих квитанций и не знает, как обойти это ..

+2

В каком столбце указан тип данных даты/времени, в котором используется строка для вставки? Это, вероятно, действительно хорошее место для начала. –

+0

Столбцы правильно выровнены, но все столбцы в файле i_contfile NVARCHAR – TrialByError

ответ

0

На первый взгляд наиболее вероятной причиной ошибки являются плохие данные в столбце i_contfile.date. Другая дата заполняется GETDATE(), которая должна быть в порядке.

Что такое схема столбца i_contfile.date? Это колонка NVARCHAR?

Одним из способов поиска точных строк с проблемой является выполнение двоичного поиска. ВСТАВЛЯЙТЕ первую половину строк с BEGIN TRAN/ROLLBACK. Если это удастся, попробуйте вторую половину. Продолжайте сужать ряды, пока не найдете тот, который вызывает проблему.

Можно ли сделать SELECT * FROM i_contfile и включить результаты в свой ответ?

Другой способ, которым я видел это, - это столбцы в SELECT, не соответствующие порядку столбцов в INSERT. В этом случае это не похоже на причину.

Это очень сложно, если запятая отсутствует, потому что тогда SQL Server рассматривает следующий столбец как псевдоним столбца предыдущего столбца. Например, SELECT ниже имеет 4 столбца, но на самом деле он имеет только 3. Без запятой SELECT приводит к переименованию ColB в ColC. Это простая ошибка на огромных INSERT запросах:

INSERT INTO Dest 
(
    Col1, 
    Col2, 
    Col3 
) 
SELECT 
    ColA, 
    ColB -- missing comma! 
    ColC, -- this is now the alias of ColB 
    ColD 
FROM Source 

- ОБНОВЛЕНИЕ -

Вы сказали, что столбец ввода был NVARCHAR столбца. Вы можете проверить правильность строки даты с ISDATE function:

INSERT INTO std_Receipt 
(...rcp_Date...) 
SELECT... 
    CASE WHEN ISDATE(date) = 0 THEN NULL 
     ELSE date 
    END, 
... 

Вы можете найти плохие данные о дате в i_contfile таблицы довольно быстро с этой техникой:

SELECT * 
FROM i_contfile 
WHERE ISDATE(date) = 0 

Если данные даты источника имеют некоторые пользовательское форматирование, мы должны иметь возможность выяснить, как обрабатывать данные, как только мы увидим, что такое формат.

+0

Ну, файл слишком велик, чтобы делать выбор * из запроса, но это действительно столбец NVARCHAR, есть ли способ форматировать их корреляцию? – TrialByError

+0

Вы можете проверить, действительно ли данные являются действительной датой с помощью функции 'ISDATE'. Обновлен ответ с дополнительной информацией. –

+0

Нет, ничего не возвращалось как плохие данные для типа даты, и ISDATE не работал и возвращается с той же ошибкой. – TrialByError

Смежные вопросы