2014-01-23 3 views
2

Мой офис использует excel для подготовки наших данных перед импортом в базу данных SQL. Однако мы наблюдаем следующую ошибку.Сохранять ведущие нули при импорте Excel в SQL

Когда данные импортируются с одного компьютера, он теряет все ведущие нули. Однако, когда он импортируется с другого компьютера, он импортируется отлично.

Примером ведущих нулей является то, что наши номера позиций должны быть отформатированы как «001, 002, 003, ... 010, 011, 012, ... 100, 101, 102, ect».

1) Файл excel хранится на сервере, поэтому нет никакой разницы в файле. 2) Если пользователи меняют рабочие станции, результат остается на компьютере и не переключается с пользователем. 3) Данные форматируются как текст. Он был отформатирован как текст как из вкладки «Данные», так и из «Форматирование ячеек».

Есть ли параметр в excel, специфичный для компьютера, а не электронная таблица, которая повлияет на экспорт данных? Или существует специальная настройка, отличная от excel, которая вызовет это?

+0

HOw вы импортируете данные в базу данных? PLease показывает какой-то код или что-то в этом роде. – OldProgrammer

+0

какая версия sql-сервера? – Chains

+1

Зачем беспокоиться? – user2140261

ответ

0

Не уверен, что преимущество заполнения данных перед вставкой в ​​базу данных будет ... (занимает больше места, медленнее поиск и т. Д.). Похоже, вы форматируете его для вывода (?), Который может быть более эффективно выполнен в другом месте.

Но в любом случае - вот некоторые идеи для вашего SELECT (SQL) заявление:

RIGHT(1000 + [excel field], 3) 

или другой будет

REPLICATE('0', 3 - LEN([excel field])) + [excel field] 

Что вы можете сделать, чтобы само поле Excel (до import) префикс его с ' (апостроф). Обратите внимание, если вы наберете 0007 в Excel, он изменит его на 7, но если вы наберете '0007, он сохранит ведущие нули.

+1

Абсолютно!Апостроф в качестве префикса для сохранения нулей в текстовом поле является еще одним хорошим исправлением. –

0

В зависимости от количества нулевых нулей, которые вам нужны, вы можете выбрать свои данные/столбец в Excel, перейдите в Excel >> Формат >> Пользовательский >> введите столько нулей, которые вам требуются, в поле «Тип» (например, 000000000 для 9-значное число с ведущими нулями), и он автоматически предисловие с правильным количеством ведущих нулей, чтобы сделать числовую строку правильной длиной (то есть 4000 = 00004000).

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

+1

Осторожно, формат Excel влияет только на то, как номер * отображается *. Фактическое содержимое ячейки (это то, что обычно читается) все равно будет «1», а не «001». –

+0

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

0

Его наилучшим вариантом, чтобы избежать опции формата «ТЕКСТ». Смутно, это не заставляет содержимое ячейки быть текстовым типом данных, и это наносит ущерб, когда формула ссылается на формат «ТЕКСТ».

Чтобы добавить к предыдущему ответу (со всеми оговорками о том, если это хорошая идея), вы можете использовать TEXT worksheet function

=TEXT(A1,"000") 

гарантировать фактическую текстовую строку с ведущими нулями, если это необходимо.

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