Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: Импорт данных из MS Excel  [new]
Orlic
Member

Откуда: г. Ижевск
Сообщений: 564
Есть подобная проблема, по форуму лазил, ссылки на базу знаний Microsoft читал, не помогло.
Необходимо:
1. Из Excel-файла с одним листом импортировать данные в таблицу SQL Server 2000.
2. Импортировать пытался через DTS-Wizard, пошагово указывал, откуда что брать и КАК куда класть. Но, учитывай сабж топика, тип данных брался "с потолка", данные теряются...
3. Почитав статьи базы знаний Microsoft и топики форума по ключевым словам ИМПОРТ ДАННЫХ, понял, что визардом не справишься, и пытался сделать в Query Analizer следущее:
select *
into #LOADER
from 
opendatasource('Microsoft.Jet.OLEDB.4.0','DataSource="E:\TEST.xls";user id=Admin;Password=;Extended properties="Excel 8.0;HDR=No;IMEX=1"')...sheet1$
причем в реестре изменил ключ TypeGuessRows на 100000, да и на 0 менял, как написано в вышеуказанном FAQ...

Что имеем:
1. Вместо ошибки
Error 7399: OLE DB provider 'Microsoft.Jet.OLEDB.4.0' reported an error.
[OLE/DB provider returned message: Unspecified error] 
OLE DB error trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: ].
получил ошибку
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' reported an error.  
[OLE/DB provider returned message: Невозможно найти устанавливаемый ISAM.]
OLE DB error trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005:   ].

Теперь то, что меня волнует:
1. Как же все таки импортировать данные и не потерять ни одной записи?
2. Какой скрипт/программу нужно написать или использовать хранимую процедуру на самом сервере?
3. Какой правильный синтаксис команды
select *
into #LOADER
from 
opendatasource('Microsoft.Jet.OLEDB.4.0','DataSource="E:\TEST.xls";user id=Admin;Password=;Extended properties="Excel 8.0;HDR=No;IMEX=1"')...sheet1$
то есть как указать к какому листу или именнованной области обращаться?
4. На чьейстороне (клиент или сервер) необходимо обновлять Jet, менять ключи в реестре, выдавать полный доступ на папку C:\Temp для учетной записи SYSTEM

Ногами пожалуйста не бить, приму к сведению дельные ссылки.
Спасибо.
9 ноя 05, 14:45    [2051664]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33541
Блог
DataSource заменить на Data Source
9 ноя 05, 15:04    [2051793]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
Orlic
Member

Откуда: г. Ижевск
Сообщений: 564
Критик
DataSource заменить на Data Source

Помоголо, но не совсем.

Данные я выбрал, но не так, как надо... В столбце INN, например, хранятся ИНН, которые введены числа... При импорте даже со строкой
opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="E:\TEST.xls";user id=Admin;Password=;Extended properties="Excel 8.0;HDR=Yes;IMEX=1"')...sheet1$

эти ИНН представляются как 1,83128E-06... Почему же, ведь я указал в параметрах явный тип текст???
10 ноя 05, 10:16    [2054275]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33541
Блог
укажите числовой, с числом десятичных знаков, равным 0
10 ноя 05, 10:59    [2054483]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
Orlic
Member

Откуда: г. Ижевск
Сообщений: 564
Критик
укажите числовой, с числом десятичных знаков, равным 0

Что-то не совсем понял, как ...
Столбец INN в таблице содержит NULL, числовые данные (ИНН) и текстовые данные; в реестре изменил ключ TypeGuessRows на 100000, да и на 0 менял, как написано в вышеуказанном FAQ...


В QA запускаю этот запрос:
select *
into #LOADER
from 
opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="E:\TEST.xls";user id=Admin;Password=;Extended properties="Excel 8.0;HDR=Yes;IMEX=1"')...sheet1$
получаю вместо числовых ИНН значения типа 1.836E-06, текстовые ячейки импортируются нормально...

Пытаюсь сделать так:
select Convert(Char(255), INN) as INN, ...
into #LOADER
from 
opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="E:\TEST.xls";user id=Admin;Password=;Extended properties="Excel 8.0;HDR=Yes;IMEX=1"')...sheet1$
но получаю те же самые числа 1.836E-06

Вопрос:
1. Как же все-таки на этапе JET.OLEDB провайдера принять ЛЮБЫЕ данные КАК ТЕКСТ без КАКОГО-ЛИБО ФОРМАТИРОВАНИЯ/КОНВЕРТИРОВАНИЯ???
2. Можно это где-то в DTS сделать или там только можно указать тип данных уже импортированных, в таблицах SWL-Server'a???
10 ноя 05, 13:03    [2055430]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
sol1111
Member

Откуда:
Сообщений: 1
проблема не в DTS на самом деле, а в драйвере ODBC для экселя.

там, кстати и настраивается количество строчек, по которым определяется тип столбца.

он конфигурится какими-то ключиками. я нашел, когда надо было, а щас уж не помню, где это искать.
Вот такой ключик в коннект стринге мне помог немного: IMEX=1
15 ноя 05, 13:07    [2069841]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Импорт данных из MS Excel  [new]
Damir77
Member

Откуда:
Сообщений: 1
Вот еще одна программка для импорта данных из Excel. Программа анализирует данные на соответствие типов и ключей, не требует подключения к серверу БД.
Сайт программы - TSNDamir.narod.ru
26 янв 07, 16:25    [3700429]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
diwww
Member

Откуда:
Сообщений: 425
Slav
Тема возникает с завидной постоянностью - например, здесь или здесь.

К сожалению, столкнулся с ней. Прочитал советы:
1. Пройтись по ячейкам - и просто два раза по каждой кликнуть.
2. Пройтись по ячейкам - и проставить апостроф.
3. Идти через csv (или другой промежуточный формат).
4. Корректировать скрипты DTS.
5. Писать свою прогу с использованием неких уникальных опций.
6. ...



Способ № 6. Имхо, более простой и быстрый чем 1 и 2:
В Excel выделям столбец \ Данные \ Текст по столбцам \ Фиксированной ширины \ Ставим разделитель далеко справа \ Делее \ Тому что слева задаем текстовый формат \ Готово
1 фев 07, 10:43    [3723805]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Импорт данных из MS Excel  [new]
tigerskin
Member

Откуда:
Сообщений: 1
Ребят, я не программист ни разу, просту приходится в excel писать...
Так вот, я решил эту проблему так:
в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel изменил значение TypeGuessRows на 1. Т.е. Jet 4 анализирует первые восемь строк по умолчанию... Функция MaxScanRows ни к чему не приводит, а именно это действо - в самую дырочку. Под шапкой таблицы прописал произвольный текст и теперь получаю все данные в текстовом виде: 12.02.08 --> "12.02.08" и тэпэ... Не знаю что такое SQL (ну слышал конечно , но может кому пригодится :))
7 апр 08, 16:15    [5513468]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Хм...
2 tigerskin, вы на дату последнего поста смотрели? Больше года прошло однако...
8 апр 08, 07:18    [5515703]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
mr_Black63
Member

Откуда: Самара
Сообщений: 34
Коллеги, всётаки подскажите. у меня от нет проблем с типами даннх.
но
select * into #LOADER
from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="C:\TEST.xls";user id=x;Password=y;Extended properties="HDR=Yes;IMEX=1"')...xactions
НЕРАБОТАЕТ (SQL 2000).
Ошибка таже
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' reported an error. Authentication failed.
[OLE/DB provider returned message: Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.]
OLE DB error trace [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IDBInitialize::Initialize returned 0x80040e4d: Authentication failed.].

Хотя следующие инструкции выполнил
http://support.microsoft.com/default.aspx?scid=kb;en-us;814398

импортировать данные подобным способом самый просто и удобный вариант для меня.
16 дек 08, 15:12    [6577866]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
Alexander Us
Member

Откуда:
Сообщений: 1130
Сегодня занимался продвинутой камасутрой с импортом их Экселя столбца, где находились числовые и текстовые данные.

Помог этот топик.
Послее введения параметера IMEX=1 импорт стал корректен.

Спасибо коллеги!
5 мар 09, 18:50    [6893609]     Ответить | Цитировать Сообщить модератору
 Re: Импорт данных из MS Excel  [new]
vassav
Member

Откуда:
Сообщений: 4
Читаю экселевский файл с помощью MICROSOFT.JETю В столбце есть как текст так и числа, весь столбец читается полностью благодоря IMEX=1, но числа, сохраненные в формате числа и читаются в виде 1,234е+4.

Уже который день пытаюсь решить эту проблему, перерыл много форумов и статей, но так ни чего работающего и не нашел.

1. Пройтись по ячейкам - и просто два раза по каждой кликнуть.
2. Пройтись по ячейкам - и проставить апостроф.
3. Идти через csv (или другой промежуточный формат).

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

P.S. Может уже есть что-то готовое что можно использовать с открытым кодом или бесплатное под .NET?
7 июл 09, 11:51    [7385171]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Microsoft SQL Server Ответить