Excel SQL Server Data Connection - PullRequest
       7

Excel SQL Server Data Connection

0 голосов
/ 23 февраля 2012

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

У меня есть база данных SQL Server, которая получает информацию каждый час и обновляется из хранимой процедуры с использованием групповой вставки.Все это прекрасно работает, однако конечным результатом является получение этой информации в Excel.

Установление соединения для передачи данных также работало нормально, пока я не попытался выполнить некоторые вычисления.Все импортированные данные отформатированы как текст.Числовые форматы Excel не работают, поэтому я решил посмотреть на таблицу в базе данных.

Все столбцы установлены на varchar, чтобы массовая вставка работала, поэтому я изменил несколько на числовые.Обновился в Excel и расчеты сработали.

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

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

Любые предложения приветствуются.

Спасибо!

1 Ответ

0 голосов
/ 08 марта 2012

Спасибо за ответы, которые я рассмотрел с помощью = value () в Excel, но хотел попытаться избежать дополнительных формул.

Мне удалось решить мою проблему, сгенерировав файл формата для массовой вставки с помощью утилиты bcp. Хотя получение его для генерации файла оказалось достаточно хитрым, ниже приведен пример того, как я его сгенерировал.

При повышенном cmd:

C:\>bcp databasename.dbo.tablename format nul -c -x -f outputformatfile.xml -t, -S localhost\SQLINSTANCE -T

Это сгенерировало файл формата xml для конкретной таблицы. Поскольку в моей таблице было два дополнительных столбца, которых не было в исходных данных, я отредактировал XML и удалил их. Это были столбцы uniqueid и getdate.

Затем я изменил оператор Bulk Insert, чтобы он использовал файл формата:

BULK INSERT [database].[dbo].[tablename]
FROM 'C:\bulkinsertdata.txt'
WITH (FORMATFILE='C:\outputformatfile.xml',FIRSTROW=3)

Используя этот метод, я смог успешно использовать числовые и int типы данных. Возвращаясь к Excel после обновления подключения к данным, он смог определить правильные типы данных.

Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...