使用 bcp 和格式文件处理日期时间
我正在使用 bcp 将平面文件导入 SQL Server 2005 数据库。
我遇到了日期时间字段的问题。
我的格式文件字段指定为:
<COLUMN SOURCE="15" NAME="DATEOFSERVICE" xsi:type="SQLDATETIME"/>
我的数据文件的日期格式为: 19820101
但是,一些(许多)填充了 00000000
由于类型不匹配,00000000 日期无法正确导入。
有没有办法指定我的格式文件来处理清零日期? 或者告诉 bcp 在遇到 00000000 时输入默认值的方法?
I'm using bcp to import a flat file into an SQL Server 2005 database.
I'm running into a problem with datetime fields.
My format file field is specified as:
<COLUMN SOURCE="15" NAME="DATEOFSERVICE" xsi:type="SQLDATETIME"/>
My data file has dates formatted as:
19820101
However, some (many) are filled with 00000000
The 00000000 dates fail to import correctly due to a type mismatch.
Is there a way to specify my format file to handle the zeroed out dates? Or a way to tell bcp to enter a default if it comes across 00000000?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议您创建一个临时表,其中日期列指定为 varchar 数据类型。 然后,将您的数据 BCP 到临时表。 将数据加载到临时表后,您可以擦除日期(例如,将 00000000 替换为 NULL)。 最后,一旦您的数据经过验证,请将其复制到真实的表中。
对于非常大的数据文件来说,这可能不太有效,但我也不确定你还能如何实现这一点。
I would suggest that you create a temp table where the date column is specified as a varchar data type. Then, BCP your data to the temp table. After the data is loaded in to the temp table, you can scrub the date (replacing 00000000 with NULL, for example). Finally, once your data is validated, copy it to the real tables.
This may not work real well for extremely large data files, but I'm not sure how else you would accomplish this either.
我将使用 OPENROWSET 和 case 语句在导入时进行翻译数据。
I would use OPENROWSET with a case statement to do the translation while importing the data.