【发布时间】:2010-10-08 09:40:22
【问题描述】:
如何使用二进制写入器为 Money 数据类型编写正确的 MS SQL 原生格式?
我想在 .net 中取一个值,从文件中读取为十进制数的字符串表示形式(实际上是从 SQL 导出的“Money”数据类型,但这并不重要)。
如何使用二进制写入器写入值,以便您可以在本机格式模式下使用 BCP 或 BULK INSERT 成功读取值?
【问题讨论】:
标签: sql-server bulkinsert currency bcp
如何使用二进制写入器为 Money 数据类型编写正确的 MS SQL 原生格式?
我想在 .net 中取一个值,从文件中读取为十进制数的字符串表示形式(实际上是从 SQL 导出的“Money”数据类型,但这并不重要)。
如何使用二进制写入器写入值,以便您可以在本机格式模式下使用 BCP 或 BULK INSERT 成功读取值?
【问题讨论】:
标签: sql-server bulkinsert currency bcp
(其中 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 表示空值。
【讨论】: