Как использовать программу записи двоичных файлов для написания правильного собственного формата MS SQL для типа данных «Деньги»?
-
05-09-2019 - |
Вопрос
Как использовать программу записи двоичных файлов для написания правильного собственного формата 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 обозначает нулевое значение.