Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт из Excel в SQL server 2005 через openrowset, Импорт из Excel в SQL server 2005  
:(
    Опции темы
lildare
Дата 14.7.2011, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 11.2.2011

Репутация: нет
Всего: нет



Всем привет. Вкратце изложу проблему: есть Excel файл (.xls) есть таблица в БД. Импортирую следующим запросом:
Код

SET @SQL = N'
 
 
INSERT INTO [192.168.3.13].[NONAME].[dbo].[TABLE]
           ([PR_NAME]
           ,[FULL_NAME]
           ,[WWW]
           ,[EMAIL]
           ,[ADRES]
           ,[PRODUCT]
           ,[FIO1]
           ,[POST1]
           ,[TEL1]
           ,[TEL2]
           ,[TEL3]
           ,[TEL4]
           ,[TEL5]
           ,[TEL6]
           ,[DOPNUM]
           ,[OTRASL]
           ,[PODOTRASL]
           ,[PR])
        Select '+@columns1+','+str(@pr1)+' 
    from OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
     ''Excel 8.0;HDR=Yes; IMEX=1; CommandTimeout = 180; Database='+@filename1+';'',
    ''SELECT '+case when @test1=1 then 'top 1' else '' end+' * FROM ['+@listname1+']'' )'  
 Exec sp_executesql @SQL


Параметр @columns1 имеет вид:
Код

cast([Наименование] as varchar),'' '','' '','' '',cast([Адрес] as varchar),cast([Товары/услуги] as varchar),'' '','' '',cast([Телефон 1] as varchar),cast([Телефон2] as varchar),cast([Телефон3] as varchar),'' '','' '','' '','' '',cast([Отрасль] as varchar),cast([Подотрасль] as varchar)


Сам процесс импорта происходит без сучка и задоринки. Так в чем же проблема ?! - спросят многие из вас. Проблема в том, что OleDB провайдер расценивает номера телефонов (а именно столбцы [Телефон 1],[Телефон 2],[Телефон 3]) как числа и заносит их в базу в следующем (экспоненциальном) виде:

2.9961e+006 (в то время как в Excel он хранится так: 2996099)

Теперь о том как я пробовал решить эту проблему:
1. Менял формат ячеек в Excel
2. Переливал данные из Excel в новый Excel лист, предварительно задавая там формат ячеек
3. попробовал (как вы видите) приведение к типам со стороны SQL server
4. прописывал в ячейке апостроф слева для того, чтобы привести к тексту, и о аллилуя, это помогло,НО неужели мне придется в каждую ячейку это прописывать, там ведь сотни строк в файле????

Ребят, помогите. Так хочется автоматизировать этот процесс. Ведь как назло разработал классный графический интерфейс для этого на C#, настроил SQL server и как назло такая мелочь, муха, которую не могу прихлопнуть!!! Может быть программно можно столбцы Excel можно как-то предварительно преобразовать??

Добавлено через 3 минуты и 41 секунду

если что, стучите в аську: 570-804-318
PM MAIL   Вверх
Ejhi
Дата 14.7.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.7.2008

Репутация: нет
Всего: нет



А если из Excel экспортировать в csv, что получится с телефонами?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.