2016-04-06 15 views
1

Ich baue eine AWS-Pipeline, um CSV-Dateien von S3 in eine RDS MySQL DB einzufügen. Das TH-Problem, mit dem ich konfrontiert bin, ist, dass wenn es versucht, die Datei zu laden, es Leerzeichen als leere Zeichenfolgen anstelle von NULL behandelt. Zum Beispiel Zeile 1 des CSV ist:Leerzeichen als NULL in MySQL einfügen

"3","John","Doe","" 

Wenn der Wert eine ganze Zahl in der MySQL-Tabelle ist, und natürlich auch in der Pipeline der Fehler ist:

Incorrect integer value: '' for column 'col4' at row 1 

Ich war die Erforschung der jdbc MySQL paramaters die Verbindungszeichenfolge zu ändern:

jdbc: mysql: // my-rds-Endpunkt: 3306/my_db_name jdbcCompliantTruncation = false

jdbcCompliantTruncationis ist nur ein ex Gibt es einen dieser Parameter, der mir helfen kann, diese Leerzeichen als Nullen einzufügen?

Danke!

EDIT: Ein wenig Kontext, die CSV-Dateien sind leert aus Rotverschiebung, so dass die Rohlinge sind ursprünglich NULLs, wenn ich sie in S3 setzen.

+0

Können Sie wandeln sie vorher? –

+0

IF (urValue = '', null, urValue) –

+0

@AndyHolmes, gute Frage, überprüfen Sie die Bearbeitung – rodrigocf

Antwort

0

die CSV-Dateien sind Entläd von Rotverschiebung

bei the documentation für die Redshift UNLOAD Befehl Schauen Sie und fügen Sie die NULL AS Option. Zum Beispiel:

NULL AS 'NULL'

+0

Hallo! Ich habe das versucht und das Problem ist, dass in der CSV ich NULL haben werde, aber die Pipeline interpretiert es als 'NULL' bei der Einfügung, damit ich den gleichen Fehler erhalten – rodrigocf

+0

Falscher Integer-Wert: 'NULL' für Spalte 'Spalte4' an Zeile 1 – rodrigocf

+0

Richtig, das war nur ein Beispiel. Sie müssen herausfinden, was die Pipeline als null betrachtet, und dies im Befehl zum Entladen verwenden. Es könnte eine Version des Null-Zeichens sein: https://en.wikipedia.org/wiki/Null_character –

0

löse ich dieses Problem mit der NULLIF Funktion:

insert into table values (NULLIF(?,''),NULLIF(?,''),NULLIF(?,''),NULLIF(?,'')) 
+0

Bitte beachten Sie, dass es sich um eine Ladung von CSV-Dateien handelt, die von einem Drittanbieterdienst ausgeführt wird. –