2014-10-19 4 views
2

Так что у меня есть время импортировать CSV-файл. Конечная цель - создать повторяемый процесс для импорта файла. Единственный способ, которым я смог импортировать файл, - это обходной путь с использованием MS Access (импорт в Access, а затем экспорт на SQL Server), который он счастливо и весело делает без проблем.Мастер импорта и экспорта SQL Server (SQL Server Express)

Но, конечно, SQL Server (Express или иначе) должен также иметь возможность импортировать его.

Файл в дикой природе здесь: http://ourairports.com/data/ и, в частности: http://ourairports.com/data/airports.csv

Это отличный набор данных, чтобы играть с (реальных данных) и у меня есть проекты по нормализации его, в результате чего его в SSRS и что не, в основном, чтобы учиться и иметь что-то, чтобы «показать» потенциального работодателя.

Но я буду проклят, если файл будет импортироваться без ошибок. В идеале столбцы будут импортировать и преобразовывать соответствующим образом, то есть столбцы, которые являются числовыми, должны заканчиваться в таблице, определенной как Int или что-то наиболее подходящее.

Наиболее частые ошибки я вижу это:

Data conversion failed. The data conversion for column "wikipedia_link" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page." 

В идеале я хотел бы, чтобы импортировать файл с помощью T-SQL и Bulk Insert, но имеют схожие проблемы.

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

Благодаря

+0

Гах! Не повезло с этим. – Steve

ответ

0

Вау, Взял меня некоторое время, чтобы выяснить, что здесь происходит!

В основном, он проходит этап проверки, поскольку SQL просматривает сопоставления и сравнивает типы данных столбцов в таблице с первыми несколькими строками csv. (Кажется, верят 8 строк.)

В этом случае верхние 8 строк пусты! Значение SQL не имеет проблемы, потому что нет данных для проверки.

Затем вы переходите к импорту, а SQL попадает в первую строку со ссылкой (строка 41), после чего разрывает проверку.

К сожалению, вы не можете менять типы данных столбцов и ожидать, что это сработает, потому что, ну, это не так. (Спасибо Microsoft!)

Одним из решений здесь является получение одного (идеально всего) из строк с Wiki Links в верхней части таблицы и повторного импорта.

EDIT

Ahha! Реальное решение! Существует изменение ключа реестра, которое устанавливает количество проверок строк. Изменение этого нуля приводит к тому, что проверяющий просматривает верхние 16 000 строк.

Вы должны изменить следующий ключ реестра к нулю:

32 Bit Machine: 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 

64 Bit Machine: 
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 
+0

PS. Будущие вопросы должны быть связаны с кодом :) – KidCode

+0

Спасибо, что посмотрели на него.Файл действительно открывается в Excel «как есть», загруженный с веб-сайта. MS Access также, похоже, достаточно успешно импортирует его и успешно экспортирует в SQL Server. Сам SQL Server, однако, не хочет импортировать его как есть, а сортировка csv до импорта только изменяет строку, в которой происходит неустранимая ошибка. – Steve

+0

Я бы в конечном счете посмотрел на решение только для кода, чтобы создать повторяемый процесс, используя частично Bulk Import (T-SQL). – Steve

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