【问题标题】:C# MySQLBulkLoader overwriting timestampC# MySQLBulkLoader 覆盖时间戳
【发布时间】:2013-07-30 11:07:34
【问题描述】:

我正在处理一些海量数据集,并且正在使用 MySQLBulkLoader 将数据导入我的数据库。但是,我遇到了 MySQLBulkLoader 覆盖自动更新的时间戳列的问题。假设我有以下结构:

Timestamp  | Name | Age | Height
--------------------------------
2011-01-01 | Jeff | 30  | 183
2012-02-03 | Bob  | 55  | 165
2016-04-05 | Sue  | 33  | 155.

我用 MySQLBulkLoader 加载的数据文件是一个 CSV,它只包含最后三列,如下所示:

Name,Age,Height
Jeff,30,183
Bob,55,165
Sue,33,155

我遇到的问题是 CSV 中的第一列写入数据库的第一列。所以我需要能够:

  • 忽略第一列或批量插入,或
  • 批量插入子集

谢谢,感谢您的帮助。

【问题讨论】:

    标签: c# mysql


    【解决方案1】:

    只是为了提供问题的答案。 My SQL 函数:

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
        [REPLACE | IGNORE]
        INTO TABLE tbl_name
        [CHARACTER SET charset_name]
        [{FIELDS | COLUMNS}
            [TERMINATED BY 'string']
            [[OPTIONALLY] ENCLOSED BY 'char']
            [ESCAPED BY 'char']
        ]
        [LINES
            [STARTING BY 'string']
            [TERMINATED BY 'string']
        ]
        [IGNORE number LINES]
        [(col_name_or_user_var,...)]
        [SET col_name = expr,...]
    

    允许通过指定列名将数据加载到特定列中。我努力通过手动创建查询来使此操作正常工作,但能够修改 MySQLBulkLoader 函数。默认情况下,该函数不允许设置列,因为列列表是只读的。但我修改了函数以允许设置列名。修改完成后,系统将数据写入正确的列,并维护时间戳。

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2016-06-27
      • 2021-02-23
      相关资源
      最近更新 更多