2016-01-07 1 views
2

Я пытаюсь найти решение для этого в течение нескольких дней без каких-либо успехов. Был бы очень признателен за любую помощьВыбрать запрос усекает числовые данные более 10 цифр

Я пытаюсь импортировать файл csv в базу данных Access, но некоторые данные из числового столбца усекаются.

У меня нет MS Access, установленного на моей машине (только предварительно предустановленные окна базы данных реактивных двигателей (msjet40.dll and msjetoledb40.dll)). Но все остальное прекрасно работает, кроме этой проблемы. Я использую Provider=Microsoft.ACE.OLEDB.12.0 в строке подключения.

Файл csv содержит числовые, а также числовые столбцы в файле. Пока числовой столбец имеет значение меньше, чем около 2140649050, он выбирает штраф.

SELECT * into ds1 FROM [Text;FMT=Delimited;HDR=YES;DATABASE=" & LFPath & "].[" & LFName & "] 

Первоначально я предполагал, что усечение данных происходит при загрузке данных в таблицу. Но данные усекаются во время выбора. Ниже выберите запрос возвращает часть данных усеченных для столбца UPC

SELECT HeadName,[upc code],len([upc code]) as maxlen FROM [Text;FMT=Delimited;HDR=YES;DATABASE=" & LFPath & "].[" & LFName & "] 

Вот выход за тот же

HeadName upc code maxlen 
TOTAL U.S 2140649030 10 
TOTAL U.S 2140649050 10 
TOTAL U.S 2140649050 10 
TOTAL U.S  
TOTAL U.S  
TOTAL U.S  
TOTAL U.S  
TOTAL U.S  

Кажется, он устанавливает MaxLength колонки на основе первых нескольких записей. Как я могу предотвратить это.

Доступ отключен из-за отсутствия дополнительной настройки для запуска инструмента в окнах.

Данные не усекаются при установке MS Access (протестировано с Access 2010). Означают ли это, что ACE.OLEDB.12 лучше работает с последней ACE Егине ACECORE.dll (wiki)

Пожалуйста, предложить какие-либо возможности, чтобы исправить эту проблему без дополнительной нагрузки установки других версий базы данных

+0

Попробуйте использовать файл [schema.ini] (https://msdn.microsoft.com/en-us/library/ms709353 (VS.85) .aspx), чтобы явно определить, что типы столбцов должны быть. Похоже, что драйвер Text предполагает, что столбец имеет длинное целое число и усекает значения, превышающие максимальное значение 32-битного целого числа (~ 2.1E9). –

+0

Число столбцов не фиксировано для файла данных. поэтому единственный вариант, который я вижу прямо сейчас, - это отсортировать файл в порядке убывания на основе этого столбца, а затем загрузить.Но мне интересно, можно ли отсортировать собственно файл csv из vba – xGen

ответ

0

Насколько я мог видеть и исследовать, я нашел 2 варианта, с которыми мы можем пойти. Оба они включают дополнительный шаг.

Первым вариантом будет Сортировка файла csv в порядке убывания столбца. В моем случае только один столбец усекался. Поэтому я мог сортировать список на основе конкретного столбца в порядке убывания, и данные вставляются без усечения. (Не удалось найти автоматизированное решение для сортировки файла программно. Так что нам нужно вручную отсортировать файл, а затем загрузить в базу данных)

Другой вариант заключается в преобразовать файл CSV в Excel файл и использовать тот же для загрузки данных. Вот SO Post для того же

0

вы можете попробовать форматирование ячеек в целом? то ваши данные не будут усекаться.

+0

. Файл будет иметь разные столбцы, которые ограничивают от исправления проблемы в файле – xGen

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