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

Откуда:
Сообщений: 267
Добрый день, уважаемые эксперты!

Столкнулся с проблемой при Bulk insert числа с запятой в поле money. А именно 295,5 (разделитель запятая) вставляется как 2955. В то время как 295.5 (разделитель точка) вставляется 295.5

Как побороть?
6 май 13, 18:11    [14264369]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Для MS SQL всегда разделителем целой и дробной части является точка.

автор
Как побороть?


Или заменить в файле, или, если это невозможно из-за того, что в нем присутствует другая информация "с запятыми", то сначала грузить в промежуточную таблицу с полями varchar(n), затем делать замену запятой на точку в этих полях, затем переливать в таблицы - получатель.

Сообщение было отредактировано: 6 май 13, 20:46
6 май 13, 20:06    [14264612]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
Евгенич
Member

Откуда:
Сообщений: 267
Закачиваю в поле varchar(10), затем
update set summa=replace(summa,',','.')
, а уже затем
alter table mytable alter column summa decimal(10,2)


Кстати как записать этот код в одной строке?

alter table mytable alter column comission decimal(10,2)
alter table mytable alter column fee decimal(10,2)


Так ругаеццо:
alter table mytable alter column comission decimal(10,2), alter column fee decimal(10,2)
7 май 13, 15:14    [14268241]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
хм, не понял, зачем alter column если промежуточная таблица и таблица-получатель это разные таблицы
7 май 13, 15:17    [14268278]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Евгенич
Кстати как записать этот код в одной строке?

alter table mytable alter column comission decimal(10,2)
alter table mytable alter column fee decimal(10,2)

В одной команде, вы хотели сказать?
Никак. См. синтаксис команды ALTER TABLE, для ALTER COLUMN там нет указания [,...n]
или [...n], обозначающего возможность повторения энное количество раз.
7 май 13, 15:23    [14268332]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
Евгенич
Member

Откуда:
Сообщений: 267
Паганель
хм, не понял, зачем alter column если промежуточная таблица и таблица-получатель это разные таблицы


У меня одна таблица - промежуточной нет
7 май 13, 17:20    [14269416]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
Евгенич
Member

Откуда:
Сообщений: 267
Гость333
Евгенич
Кстати как записать этот код в одной строке?

alter table mytable alter column comission decimal(10,2)
alter table mytable alter column fee decimal(10,2)

В одной команде, вы хотели сказать?
Никак. См. синтаксис команды ALTER TABLE, для ALTER COLUMN там нет указания [,...n]
или [...n], обозначающего возможность повторения энное количество раз.



Пасип, хотел покомпактней...:(
7 май 13, 17:21    [14269422]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Евгенич
У меня одна таблица - промежуточной нет
Она потом убивается что ли? Или этот Bulk Insert одноразовый?
Потому что alter туда-сюда было бы странно....
7 май 13, 17:23    [14269434]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Паганель
Потому что alter туда-сюда было бы странно....

Сейчас так модно.
7 май 13, 17:28    [14269452]     Ответить | Цитировать Сообщить модератору
 Re: Bulk insert числа с запятой в поле money  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Евгенич
Паганель
хм, не понял, зачем alter column если промежуточная таблица и таблица-получатель это разные таблицы


У меня одна таблица - промежуточной нет
Быстрее с промежуточной, если вам важна скорость.
7 май 13, 18:43    [14269819]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить