Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 импорт из excel в ячейке больше 255 символов.  [new]
SandraSidorova
Member

Откуда: Пермь
Сообщений: 60
Здравствуйте! Задача такая: В sql server переносятся данные из умных таблиц файла эксель. В таблице есть ячейка, содержащая примерно 500 символов.

Данные из этой ячейки при переносе урезаны до 255 символов. Даже несмотря на то, что эта ячейка находится среди первых 8ми строк. Так вот если в столбце заменить все численные значения на какой-то текст, то данные не будут урезаться, поле получит формат мемо и все норм. Но раз встречаются численные значения в столбце, то поле получает формат nvarchar(255).

Может есть какое-то решение. Или же добавлять ко всем ячейкам какое-то текстовое значение и потом его выкашивать - единственный вариант решения?
Спасибо!
9 янв 17, 11:22    [20084046]     Ответить | Цитировать Сообщить модератору
 Re: импорт из excel в ячейке больше 255 символов.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20601
SandraSidorova
В sql server переносятся данные из умных таблиц файла эксель.
Подробно - как именно?
0
SandraSidorova
Так вот если в столбце заменить все численные значения на какой-то текст, то данные не будут урезаться, поле получит формат мемо и все норм.

IMEX=1 ?
9 янв 17, 11:57    [20084226]     Ответить | Цитировать Сообщить модератору
 Re: импорт из excel в ячейке больше 255 символов.  [new]
SandraSidorova
Member

Откуда: Пермь
Сообщений: 60
Akina,

Select * from openrowset ('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\dn\перв.xlsx;imex=1;HDR = YES', 'SELECT * FROM [Паспорт$]')


imex=1
9 янв 17, 12:16    [20084325]     Ответить | Цитировать Сообщить модератору
 Re: импорт из excel в ячейке больше 255 символов.  [new]
Шыфл
Member

Откуда: Прага
Сообщений: 776
Akina,
попробуй "HDR=NO" и вручную выпиливать названия столбцов
9 янв 17, 12:19    [20084348]     Ответить | Цитировать Сообщить модератору
 Re: импорт из excel в ячейке больше 255 символов.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20601
+ offtop
Простите, Вы говорите, что данные ПЕРЕНОСЯТСЯ (вероятно, в существующую таблицу). Но при этом показываете SELECT. Но это к слову...


Попробуйте вместо запроса к листу использовать собственно лист как таблицу:
Select * from openrowset ('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\dn\перв.xlsx;HDR = YES;IMEX=1;', '[Паспорт$]')


Попробуйте также изменить количество сканируемых строк корректировкой ключа реестра TypeGuessRows.

В самом крайнем случае попробуйте Excel -> CSV -> BULK INSERT.
9 янв 17, 12:52    [20084479]     Ответить | Цитировать Сообщить модератору
 Re: импорт из excel в ячейке больше 255 символов.  [new]
SandraSidorova
Member

Откуда: Пермь
Сообщений: 60
Akina,

Данные не переносятся в существующую таблицу, а создается таблица на сервере с данными из умных таблиц экселя. Я немного неверно написала)
К сожалению, так и не выяснила в чем проблема. Количество считываемых строк изменяла. Все отлично работает если в ячейках только текстовые данные. Но мне нужно чтоб срабатывало даже в том случае если в остальных ячейках числа.

Решением было просто к каждой ячейке приписывать какую-то строку например "@#$", тогда в sql все переносится как текст. и полю присваивается формат ntext. После чего эту строку '@#$' выкашиваю.
Вроде работает все. Ну, конечно, хотелось бы чтоб не было заморочек с добавлением символов.
10 янв 17, 08:45    [20087406]     Ответить | Цитировать Сообщить модератору
 Re: импорт из excel в ячейке больше 255 символов.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20601
SandraSidorova
Все отлично работает если в ячейках только текстовые данные.

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

Альтернативный вариант - добавление в начало значения каждой ячейки признака строкового типа (одинарная кавычка):
For Each OneCell In Range(...)
    OneCell.Value = "'" & OneCell.Value
Next


SandraSidorova
так и не выяснила в чем проблема
Ну вот такая особенность Excel ISAM. И не лечится.
10 янв 17, 09:04    [20087450]     Ответить | Цитировать Сообщить модератору
 Re: импорт из excel в ячейке больше 255 символов.  [new]
SandraSidorova
Member

Откуда: Пермь
Сообщений: 60
[/quot]Ну вот такая особенность Excel ISAM. И не лечится.[/quot]

Спасибо! Значит придется только выкручиваться.

А с ' - кавычкой тоже пробовала, но эту кавычку видит только сам эксель. А В sql данные переносились все так же. и тип nvarchar все равно присваивался и обрезал длинные строки. только приписывание символов помогло
10 янв 17, 11:25    [20087990]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить