Как с помощью двоичного записывающего устройства написать правильный собственный формат MS SQL для типа данных Money?

Как с помощью двоичного записывающего устройства написать правильный собственный формат MS SQL для типа данных Money?

Я хотел бы взять значение в .net, прочитать из файла как строковое представление десятичной суммы (на самом деле это экспортированный тип данных «Деньги» из SQL, но это неважно).

Как я могу использовать двоичный модуль записи для записи значения, чтобы вы могли использовать BCP или BULK INSERT в режиме собственного формата для успешного чтения значения?


person Scott B    schedule 18.02.2009    source источник


Ответы (2)


(где w - ранее созданный двоичный писатель)

                    Dim dec = CDec(aString)
                    Dim lng = CLng(dec * 10000)
                    Dim bytes = BitConverter.GetBytes(lng)
                    w.Write(bytes(4))
                    w.Write(bytes(5))
                    w.Write(bytes(6))
                    w.Write(bytes(7))
                    w.Write(bytes(0))
                    w.Write(bytes(1))
                    w.Write(bytes(2))
                    w.Write(bytes(3))

Могут быть более чистые или лучшие способы, но, похоже, это нормально

в качестве заголовка, этот формат предназначен только для столбцов денег NON NULL, я думаю, вам нужно сначала написать байт длины или что-то в этом роде для столбцов денег с нулевым значением

person Scott B    schedule 18.02.2009

Я не помню, как делать нулевые значения для числовых типов в файлах с разделителями с помощью BCP, но я считаю, что если вы используете файл с префиксом длины, значение длины -1 означает нулевое значение.

person ConcernedOfTunbridgeWells    schedule 20.01.2010