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

StackOverflow https://stackoverflow.com/questions/562042

Вопрос

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

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

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

Это было полезно?

Решение

(где 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, я думаю, вам нужно сначала написать байт длины или что-то в этом роде для столбцов денег с нулевым значением

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top