【问题标题】:Format datetime fields in bcp output files in Sybase ASE (or with Sed)在 Sybase ASE(或使用 Sed)中格式化 bcp 输出文件中的日期时间字段
【发布时间】:2014-08-02 18:22:21
【问题描述】:

我正在尝试使用从 Sybase ASE 数据库创建的 bcp 文件在 mysql 中构建数据库。

  1. 我从 Sybase 创建 ddl,并将其转换为 Mysql ddl。
  2. 我使用 Sybase 生成 bcp.out 文件。
  3. 当我尝试在新的 Mysql 数据库中插入此 bcp.out 文件时,日期时间字段的格式出现问题。

我在 bcp.out 文件中的内容:

iker1 0 1 6 3 1 0 1 Sep 16 2011 11:20:05:950AM
iker2 1 1 6 3 1 0 1 Jun 15 2012 11:20:05:750AM 
gdf34 0 2 6 3 1 0 1 Feb 05 2014 11:20:05:016AM

我对 bcp.out 文件的期望:

iker1 0 1 6 3 1 0 1 2011-09-16 11:20:05.950
iker2 1 1 6 3 1 0 1 2012-06-15 11:20:05.750
gdf34 0 2 6 3 1 0 1 2014-02-05 11:20:05.016

当我们执行 bcp.out 文件时,是否有任何方法可以格式化/配置 Sybase Central 中日期字段的输出?

有(简单的)方法(使用 sed)吗?

【问题讨论】:

  • 要使用 bcp,您将使用视图,并将日期时间转换为视图中您希望的格式。从那里你可以 bcp 出视图。
  • @MichaelGardner,是的,24 小时制
  • @MichaelGardner 我做了一个类似 --> create view ..., CONVERT(DATETIME, change_date, 21) as change_date from names 的视图,我得到了相同的结果。我错过了什么吗?
  • 检查我的答案 - 它应该会有所帮助。

标签: mysql datetime sed sybase bcp


【解决方案1】:

这是从数据库端执行此操作的一种方法。

在您的表上创建一个视图,定义您希望看到的日期转换。在这种情况下,以下语句将以您想要的格式检索日期。

select convert(char(10),your_date_column,23)+" "+convert(char(8),your_date_column,8)+"."+convert(char(3),datepart(ms,your_date_column))

这样可以结合在桌子上创建视图:

create view my_view (col1, col2, col3, your_date_column) as
select col1, col2, col3, convert(char(10),your_date_column,23)+" "+convert(char(8),your_date_column,8)+"."+convert(char(3),datepart(ms,your_date_column))
from your_table

此时,您可以使用bcp 从视图中提取数据。

bcp MyDB..my_view out my_data.out -Uusername -Ppassword -Sservername -c

【讨论】:

    【解决方案2】:
    sed 's/@\([a-zA-Z]\{3\}\) \([^@]*-@@-\)$/@\2\1/
         s/Jan$/01/;s/Feb$/02/;s/Jun$/06/;s/Sep$/09/;s/Dec$/12/
         s/@\([0-9][0-9]\) \([0-9]\{4\}\)\( [^@]*-@@-\)\([0-9][0-9]\)$/@\2-\4-\1\3/
         s/..-@@-/-@@-/' YourFile
    

    解释:

    1. 在月底隔离月份
    2. 更改索引中的月份名称
    3. 在日期中引入索引并重新格式化
    4. 删除 AM/PM(sed 数学不强,所以对我来说选择最简单的,但根据月份的相同原则,可以调整小时)

    完成这个月以全面投入二线工作。

    我怀疑时间也必须改变(这里只有上午时间),这个 sed 不要改变它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2023-04-05
      相关资源
      最近更新 更多