bbm03241
bbm03241

Reputation: 41

Setting date format parameter on a sqoop-import job

I am having trouble casting a date column to a string using sqoop-import from an oracle database to an HDFS parquet file. I am using the following:

sqoop-import -Doraoop.oracle.session.initialization.statements="alter session set nls_date_format='YYYYMMDD'"

My understanding is that this should execute the above statement before it begins transferring data. I have also tried

-Duser.nls_date_format="YYYYMMDD"

But this doesn't work either, the resulting parquet file still contains the original date format as listed in the table. If it matters, I am running these in a bash script and also casting the same date columns to string using --map-column-java "MY_DATE_COL_NAME=String"What am I doing wrong?

Thanks very much.

Upvotes: 2

Views: 3144

Answers (1)

Chaitanya Kashyap
Chaitanya Kashyap

Reputation: 11

Source: SqoopUserGuide

Oracle JDBC represents DATE and TIME SQL types as TIMESTAMP values. Any DATE columns in an Oracle database will be imported as a TIMESTAMP in Sqoop, and Sqoop-generated code will store these values in java.sql.Timestamp fields.

You can try casting date to String while importing within the query.

For Example

sqoop import -- query 'select col1, col2, ..., TO_CHAR(MY_DATE_COL_NAME, 'YYYY-MM-DD') FROM TableName WHERE $CONDITIONS'

Upvotes: 1

Related Questions