最近看了以前寫的Sqoop腳本,就順手整理一下數據導入導出的相關參數使用方法及解釋。
參數 | 解釋 |
--connect <jdbc-uri> | 關係數據庫連接地址,比如mysql的 jdbc:mysql://xx.x.35.xx:3306/mytest |
--connection-manager <class-name> | 連接管理者DriverManager,一般都是用默認的,不用特意設置 |
--driver <class-name> | 驅動類,都是用默認的,不用特意設置 |
--hadoop-home <dir> | 如果指定該參數值,則會覆蓋掉sqoop-env.sh的值 |
--help | 幫助文檔 |
-P | 從控制檯讀取輸入的密碼,在執行命令時再輸入密碼 |
--password | 輸入關係數據庫密碼 |
--username | 輸入關係數據庫的賬號 |
--verbose | 打印運行的詳細信息 |
--connection-param-file <filename> | 指定存儲數據庫連接參數的屬性文件,可不設置,指定默認值 |
--append | 追加數據到已經存在的數據集HDFS,使用直接添加--append即可 |
--as-avrodatafile | 導入數據到avro格式文件 |
--as-sequencefile | 將數據導入到一個sequence文件中 |
--as-textfile | 將數據導入到一個普通文本文件中 |
--boundary-query <statement> | 邊界查詢,也就是在導入前先通過SQL查詢得到一個結果集,boundary--query 'select id,name from test where id=999' |
--columns <col,col,col…> | 指定要導入的字段 |
--direct | 快速模式,使用數據庫自帶的導入導出工具,官網介紹這樣更快 |
--direct-split-size <n> | direct導入的基礎上,對導入的流按字節數分塊,可實現把大文件拆分爲多個小文件 |
--inline-lob-limit <n> | 設置大對象數據類型的最大值 |
-m,--num-mappers <n> | 設置map個數,不能大於節點個數 |
-e,--query <statement> |
從查詢結果中導入數據,該參數使用需指定--target-dir,在查詢語句中一定要有where條件且在where條件中需要包含$CONDITIONS,示例:--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \ --split-by a.id --target-dir /user/foo/joinresults |
--split-by <column-name> | 設置切分數據的字段,一般爲主鍵 |
--table <table-name> | 關係數據庫表名 |
--target-dir <dir> | 指定的hdfs路徑 |
--warehouse-dir <dir> | --target-dir不能同時使用,指定數據導入的hdfs目錄 |
--where <where clause> | 過濾條件 |
-z/--compress | 設置壓縮算法,比如gzip |
--compression-codec <c> | 壓縮編碼,默認爲gzip |
--null-string <null-string> | 不指定null字符串會被使用 |
--null-non-string <null-string> | 不指定null字符串會被使用 |
--map-column-java <mapping> | 重寫SQL到java類型的映射,--map-column-java id=String,value=Integer |
--map-column-hive | 重寫Hive到java類型的映射 |
--check-column (col) | 用來判斷增量導入的字段 |
--incremental (mode) | append追加模式和lastmodified最後修改時間兩種模式,比如指定大於last-value的值 |
--last-value (value) | 上次導入的最大值 |
--enclosed-by | 給字段值前加上指定的字符 |
--escaped-by <char> | 對字段中的雙引號加轉義符 |
--fields-terminated-by <char> | 設定每個字段是以什麼符號作爲結束,默認爲逗號 |
--lines-terminated-by <char> | 設定每行記錄之間的分隔符,默認是\n |
--mysql-delimiters | Mysql默認的分隔符設置,字段之間以逗號分隔,行之間以\n分隔,默認轉義符是\ |
--optionally-enclosed-by <char> | 給帶有雙引號或單引號的字段值前後加上指定字符 |
--input-enclosed-by <char> | 對字段值前後加上指定字符 |
--input-escaped-by <char> | 對含有轉移符的字段做轉義處理 |
--input-fields-terminated-by <char> | 字段之間的分隔符 |
--input-lines-terminated-by <char> | 行之間的分隔符 |
--input-optionally-enclosed-by <char> | 給帶有雙引號或單引號的字段前後加上指定字符 |
--hive-delims-replacement <arg> | 用自定義的字符串替換掉數據中的\r\n等 |
--hive-drop-import-delims | 在導入數據到hive時,去掉數據中的\r\n等字符 |
--hive-partition-key | 分區字段,默認爲string |
--hive-partition-value | 指定分區字段的值 |
--hive-home | hive安裝目錄,該參數覆蓋之前默認配置的目錄 |
--hive-overwrite | 覆蓋Hive中存在的數據 |
--create-hive-table | 默認爲false,如果目標表存在,創建表會失敗 |
--hive-table | hive表名,默認爲mysql的表名 |
--table | 指定關係數據庫的表名 |
--hbase-create-table | 創建Hbase表 |
--hbase-row-key | 指定字段作爲rowkey,複合鍵用逗號隔開 |
--hbase-table | 指定hbase表名 |
--column-family | 設置hbase的列族 |
--bindir | 指定生成的java文件和jar包的輸出路徑 |
--class-name | 設置生成的java文件的名稱 |
--jar-file | Codegen工具置爲不可用,使用指定的jar包 |
--outdir | 生成的java文件存放路徑 |
--package-name | 報名,比如com.test會生成com和test兩級目錄 |
--update-key | 更新的列名稱,多個用逗號隔開 |
--update-mode | 指定更新策略,包括:updateonly(默認)、allowinsert |
--staging-table | 在數據導出到數據庫之前,數據臨時存放的表名稱 |
--clear-staging-table | 清除工作區中臨時存放的數據 |
--batch | 使用批量模式導出 |
--input-optionally-enclosed-by | 給帶有雙引號或單引號的字段前後加上指定字符 |