我有一个很大的CSV文件并且包含错误的时间戳格式(8/1/2014 0:03:00)并且想要导入到BigQuery中。如何将其转换为不同的格式(2014-08-19 07:41:35.220)??
过程中的错误
File: 0 / Line:1 / Field:1, Could not parse '8/1/2014 0:03:00' as a timestamp. Required format is YYYY-MM-DD HH:MM[:SS[.SSSSSS]]
答案 0 :(得分:1)
答案 1 :(得分:1)
以下是使用参考时间戳的示例。我遇到了类似的问题,并想出了类似的东西。
SELECT
CONCAT(year,"-",month,"-",day," ",clock) as bq_formatted_date,
FROM
(
SELECT
IF(LENGTH(REGEXP_EXTRACT(date_orig, r'([^\/]+)\/')) = 1, CONCAT("0",REGEXP_EXTRACT(date_orig, r'([^\/]+)\/')), REGEXP_EXTRACT(date_orig, r'([^\/]+)\/')) as month,
IF(LENGTH(REGEXP_EXTRACT(date_orig, r'.*?\/([^\/]+)\/')) = 1, CONCAT("0",REGEXP_EXTRACT(date_orig, r'.*?\/([^\/]+)\/')),REGEXP_EXTRACT(date_orig, r'.*?\/([^\/]+)\/')) as day,
REGEXP_EXTRACT(date_orig, r'.*\/([0-9]+)') as year,
REGEXP_EXTRACT(date_orig, r'([0-9]+:[0-9]+:[0-9]+)') as clock
FROM (SELECT "8/1/2014 0:03:00" as date_orig)
)
这会将此作为输出2014-08-01 0:03:00
。此正则表达式将填充前导零的单个数字月或日。
答案 2 :(得分:1)
您可以使用PARSE_DATETIME
SELECT PARSE_DATETIME("%m/%d/%Y %H:%M:%S",'8/1/2014 0:03:00')
答案 3 :(得分:0)
或者,由于这是一个CSV文件,您可以使用我们的联合数据源(https://cloud.google.com/bigquery/federated-data-sources)直接查询CSV文件,并在导入数据时进行转换。查询仍然与史蒂夫建议的相同。