Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 是否可以使用sqoop导入表并添加额外的时间戳列?_Oracle_Hadoop_Timestamp_Sqoop - Fatal编程技术网

Oracle 是否可以使用sqoop导入表并添加额外的时间戳列?

Oracle 是否可以使用sqoop导入表并添加额外的时间戳列?,oracle,hadoop,timestamp,sqoop,Oracle,Hadoop,Timestamp,Sqoop,是否可以使用sqoop命令“import table”将表从oracle数据库导入Hadoop集群,并添加一个带有当前时间戳的额外列(用于故障诊断)?到目前为止,我有以下命令: sqoop导入-Dorg.apache.sqoop.splitter.allow_text_splitter=true--connect jdbc:oracle:thin:@//MY_oracle_SERVER--username--password password--target dir/MyDIR--table S

是否可以使用sqoop命令“import table”将表从oracle数据库导入Hadoop集群,并添加一个带有当前时间戳的额外列(用于故障诊断)?到目前为止,我有以下命令:

sqoop导入-Dorg.apache.sqoop.splitter.allow_text_splitter=true--connect jdbc:oracle:thin:@//MY_oracle_SERVER--username--password password--target dir/MyDIR--table SOURCE_table--hive table DESTINATION_table--hive导入--hive覆盖--hive delims replacement'

我想在表中添加一个timestamp列,以便知道数据是何时加载的。可能吗


提前感谢

您可以使用自由形式查询导入而不是表导入,并调用时间戳函数:

sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect jdbc:oracle:thin:@//MY_ORACLE_SERVER --username USERNAME --password PASSWORD --target-dir /MyDIR --fields-terminated-by '\b' ----query 'SELECT a.*,systimestamp FROM SOURCE_TABLE a' --hive-table DESTINATION_TABLE  --hive-import --hive-overwrite --hive-delims-replacement '<newline>'
sqoop导入-Dorg.apache.sqoop.splitter.allow_text_splitter=true--connect jdbc:oracle:thin:@//MY_oracle_SERVER--username--password password--target dir/MyDIR--以“\b”---query SELECT a.*结尾的字段,systimestamp来自源\表a'--配置单元表目标\表--配置单元导入--配置单元覆盖--配置单元删除替换''

也许您可以使用sysdate代替systimestamp(较小的数据类型但精度较低)

您可以使用自由格式查询导入代替表导入,并调用timestamp函数:

sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect jdbc:oracle:thin:@//MY_ORACLE_SERVER --username USERNAME --password PASSWORD --target-dir /MyDIR --fields-terminated-by '\b' ----query 'SELECT a.*,systimestamp FROM SOURCE_TABLE a' --hive-table DESTINATION_TABLE  --hive-import --hive-overwrite --hive-delims-replacement '<newline>'
sqoop导入-Dorg.apache.sqoop.splitter.allow_text_splitter=true--connect jdbc:oracle:thin:@//MY_oracle_SERVER--username--password password--target dir/MyDIR--以“\b”---query SELECT a.*结尾的字段,systimestamp来自源\表a'--配置单元表目标\表--配置单元导入--配置单元覆盖--配置单元删除替换''


也许您可以使用sysdate代替systimestamp(较小的数据类型,但精度较低)

您可以使用sqoop创建一个临时配置单元表,然后使用带有额外所需列的旧配置单元表创建一个新的配置单元表。

您可以使用sqoop创建一个临时配置单元表,之后,使用旧配置单元表创建一个新的配置单元表,该表带有额外的必填列。

您能在Oracle中创建一个包含时间的视图吗?或者你想知道它在HDFS中实际登陆的时间?我没有Oracle DB的权限。我想知道HDFS上的时间数据。你能在Oracle中查看包含时间的数据吗?或者你想知道它在HDFS中实际登陆的时间?我没有Oracle DB的权限。我想知道到达HDFSThis上的时间数据应该可以工作,不过,我需要在where子句中指定--split by选项和$CONDITIONS。基于此,我使用了以下命令:sqoop import-Dorg.apache.sqoop.splitter.allow_text_splitter=true--connect jdbc:oracle:thin:@//MY_oracle_SERVER--username--password password--target dir/MyDIR--以“\b”-query SELECT a.*结尾的字段,sysdate as load_date FROM SOURCE_TABLE a,其中$CONDICTIONS'--配置单元表目的地_TABLE--配置单元导入--配置单元覆盖--配置单元delims替换“”--按源_TABLE_ID拆分,但不会上载编辑,因为该表几乎具有预定义的源列,如果要添加另一列,则需要创建一个新表,基于另一个条件,这应该可以工作,不过,我需要在where子句中指定--split by选项和$CONDITIONS。基于此,我使用了以下命令:sqoop import-Dorg.apache.sqoop.splitter.allow_text_splitter=true--connect jdbc:oracle:thin:@//MY_oracle_SERVER--username--password password--target dir/MyDIR--以“\b”-query SELECT a.*结尾的字段,sysdate as load_date FROM SOURCE_TABLE a,其中$CONDICTIONS'--配置单元表目的地_TABLE--配置单元导入--配置单元覆盖--配置单元delims替换“”--按源_TABLE_ID拆分,但不会上载编辑,因为该表几乎具有预定义的源列,如果要添加另一列,则需要创建一个新表,基于另一个,我认为这可能是我的选择,因为当我导入表时,我无法更改其结构。我必须创建一个新的配置单元表,其中包含基于导入表的附加选项。这对您有意义吗?我认为,sqoop只用于表中存在的数据,我们不能在导入时为现有表添加列。所以只需使用相同的方法,这意味着我要添加的每一列都必须添加到HDFS中。不涉及Sqoop。我说得对吗?是的,这是最好的方法。我想这可能是我的选择,因为当我导入表时,我无法更改其结构。我必须创建一个新的配置单元表,其中包含基于导入表的附加选项。这对您有意义吗?我认为,sqoop只用于表中存在的数据,我们不能在导入时为现有表添加列。所以只需使用相同的方法,这意味着我要添加的每一列都必须添加到HDFS中。不涉及Sqoop。我说得对吗?是的,这是最好的办法。