2016-10-01 2 views
1

Ich mache nur m=1, was bedeutet, dass ich den nicht parallelen Import erzwinge, oder? Meine Tabelle hat 500000 Linien und ich möchte nur einen Teil importieren, um einen in den Zustand, in einer freien Abfrage verwenden, hier ist mein Befehl:

sqoop import --connect jdbc:mysql://localhost/employees --username root -P --query 'select emp_no, title from titles where "emp_no < 10020 AND \$CONDITIONS"' --target-dir /title_set --m 1; 

Wenn ich das Ergebnis zu überprüfen, ist es leer zeigt aber eine _SUCCESS hat Datei: Directory listing with _SUCCESS file Was ist falsch mit meinem Import-Skript?

Antwort

0

Es gibt zwei Möglichkeiten, Abfrage mit shoop-Import zu schreiben, aktualisieren Sie Ihre Abfrage wie folgt.

1) Abfrage in einfache Anführungszeichen einschließen.

'select emp_no, title from titles where emp_no < 10020 AND $CONDITIONS '

2) Fügen Sie Anfrage in doppelten Anführungszeichen.

"select emp_no, title from titles where emp_no < 10020 AND \$CONDITIONS" 

Die unten ist von Sqoop Dokumentation darüber.

Wenn Sie die Abfrage mit doppelten Anführungszeichen versehen ("), müssen Sie \ $ CONDITIONS anstelle von nur $ CONDITIONS verwenden, um zu verhindern, dass Ihre Shell sie als Shell-Variable behandelt. Zum Beispiel eine doppelt zitierte Abfrage könnte aussehen: "SELECT * FROM x WO a = 'foo' UND \ $ BEDINGUNGEN"

+0

Vielen Dank, das funktioniert! Es ist komisch, jemand in meiner anderen Frage sagte mir, das Zitat auf die WHERE-Klausel aufzunehmen. – PasLeChoix

+0

Don ' Vergessen Sie nicht, Antworten, die Sie akzeptieren, zu verbessern. –