SQL INSERT, Abschneiden des Feldes erzwingen

8

Ich habe Eingabedaten mit einigen "Rogue" -Feldern, die länger sind als das entsprechende Datenbankfeld. Dies führt dazu, dass mein Import-Skript, das SQL-INSERT-Anweisungen verwendet, mit einer Warnung umfällt:

%Vor%

Wie kann ich das Abschneiden dieser Felder erzwingen und mein Skript aktivieren?

    
Ben 12.01.2009, 16:38
quelle

4 Antworten

8

Wenn Sie etwas einfügen, tun Sie Folgendes:

%Vor%

Sie speichern nur die linken N Zeichen in der DB.

    
Ian Jacobs 12.01.2009 16:49
quelle
7

Verwenden Sie Ansi Warnungen? Ссылка

%Vor%     
Meff 20.05.2013 15:39
quelle
6

Persönlich möchte ich, dass sie fehlschlagen und dann auf die Daten schauen. Ich glaube nicht, dass Sie jemals eine automatische Kürzung von Daten in Betracht ziehen sollten. Sie können Ihre Felddefinition unbedingt vergrößern. Sie werden es nicht wissen, es sei denn, Sie überprüfen die fehlerhaften Zeilen visuell.

Beispiel: Wir speichern Sprachtitel. Angenommen, Sie hätten zwei Titel:
Wie man ein Buch liest:
Wie man ein Buch in der Badewanne liest, ohne es nass zu machen

Wenn nun dein Feld 10 Zeichen lang wäre, würden beide auf dasselbe reduziert werden. Außerdem würde das, wozu sie abgeschnitten wurden, keinen Sinn ergeben. Beide würden sagen "Wie man rea" Jetzt haben Sie keinen Unterschied beteeen zwei sehr unterschiedliche Titel und was Sie haben, ist sowieso nicht korrekt. Es ist eindeutig richtig, das Feld anzupassen, um eine größere Anzahl von Zeichen zu speichern. Dieses Beispiel ist albern, aber Müll rein, Müll raus. Wenn Sie die Namen von Personen oder anderen wichtigen Daten abschneiden, werden Sie möglicherweise Probleme haben, weil Sie fehlerhafte Daten haben. Ich habe gesehen, dass dies bei unseren Sprachtiteln mit Nachnamen, mit Adressen, mit Telefonnummern und vielen anderen Daten passiert ist. Wenn Sie die Daten abschneiden müssen, werden höchstwahrscheinlich nutzlose Daten für diesen Datensatz gespeichert. Entweder müssen die Daten korrekt bereinigt werden (z. B. das Entfernen der () - von einer Telefonnummer, wenn Sie nur die Zahlen speichern), bevor Sie in die Produktionsdaten importieren, oder das Feld muss größer sein.

    
HLGEM 12.01.2009 21:31
quelle
1

Ich kenne keinen einfacheren Weg als sie aufzuspüren und LEFT() zu verwenden. Ich würde gerne wissen, ob es da ist.

Offensichtlich können Sie die Metadaten wie INFORMATION_SCHEMA.COLUMNS verwenden, um dies automatisch zu bestimmen und ein LEFT() auf die entsprechende Länge zu schreiben.

    
Cade Roux 12.01.2009 16:50
quelle

Tags und Links