Я пытаюсь импортировать некоторые данные в SQL Server 2008 с помощью Bulk Insert, но я получаю кучу ошибок преобразования:SQL ошибка Bulk Insert 4863
Msg 4864, Level 16, State 1, Строка 1 Ошибка преобразования данных массовой загрузки (несоответствие типа или недопустимый символ для указанной кодовой страницы) для строки 5902, столбец 2 (Тип).
ИТАК Первые вещи сначала:
а) данные поступают из синтаксического анализа я построил в C#. В этом файле есть 4 столбца, разделенных вкладками. Столбцы могут быть или не иметь значения null. Сортировка - UTF-8. Вот выдержка из этого.
D00486 DBLinks PubChem 7847552
D00486 DBLinks LigandBox D00486
**D00487 Name Pyridostigmine bromide (JP15/USP/INN)** -- WORKS
D00487 Name Mestinon (TN)
D00487 Chemical 260.016 C9H13N2O2. Br
D00487 Target PATH:hsa00564(43)
D00487 Remark Therapeutic category: 1239
D00487 Remark ATC code: N07AA02
D00487 Pathway PATH: map07220 Cholinergic and anticholinergic drugs
D00487 DBLinks CAS 101-26-8
D00487 DBLinks PubChem 7847553
D00487 DBLinks DrugBank DB00545
D00487 DBLinks LigandBox D00487
**D00488 Name Pyrimethamine (JAN/USP/INN)** -- DOES **NOT** WORK!
D00488 Name Daraprim (TN)
Вторая в последнюю строку генерирует сообщение об ошибке, подобное тому, которое я ранее показывал вам. Что меня действительно поражает, так это то, что другая строка, выделенная жирным шрифтом, довольно схожа, но не вызывает никакой ошибки.
б) Это то, что я использую для создания таблицы:
CREATE TABLE [dbo].[KB] ([BEName] [nvarchar](1000) NOT NULL, [Type] [nvarchar](1000) NULL, [Name] [nvarchar](1000) NULL, [Value] [nvarchar](1000) NULL) ON [PRIMARY]
с) Это то, что я сейчас использую для импорта данных из файла:
DECLARE @SQL nvarchar(4000)
SET @SQL = 'BULK INSERT KB FROM ''C:\KB.xml'' WITH (FirstRow = 1, FORMATFILE = ''C:\out_KB.fmt'')';
EXEC(@SQL)
Мне пришлось вручную генерировать файл fmt, потому что по какой-то причине BCP не смог подключиться к моей базе данных (все еще разрабатывая основы для нее ...), поэтому возможно, что это не так, как должно быть. В любом случае, вот это содержание:
9.0
4
1 SQLCHAR 0 100 "" 1 BEName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 500 "\t" 2 Type SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 500 "\t" 3 Name SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 500 "\n" 9 Value SQL_Latin1_General_CP1_CI_AS
Как я уже отмечалось ранее, я не имеют большого опыта работы с ППГ; первоначально я просто использовал
BULK INSERT KB FROM ''C:\KB.xml'' WITH (FirstRow = 1, RowTerminator = ''\n'' , FieldTerminator = ''\t'')
но все равно это не сработало. Я бы предпочел использовать это вместо файла FMT; Я googled и попробовал пару трюков (например, замена \ n с \ n \ cr или введение кода ASCII \ n вместо).
Любые идеи? Я не могу сказать, что у меня есть, я сейчас исчерпал себя, просыпаюсь до полудня или что-то в этом роде: S (сейчас здесь 4 часа ночи).
Приветствия товарищи, спасибо и заранее Hal
PS: Я думаю, что образцы хорошо, но, пожалуйста, будь моим гостем и просить то, что вам может понадобиться в любое время. PS2: Извините за стену с текстом;)
Хорошо, спасибо. Мне нужно будет его реализовать когда-нибудь, сейчас мне удалось импортировать данные через GUI задачи. Еще раз спасибо –