lima-city: Webhosting, Domains und Cloud
0 Pluspunkte 0 Minuspunkte

Ich habe eine CSV Datei in der Dateipfade (Windows) stehen.

FolderPath;IdentityReference;FileSystemRights;IsInherited
"\\FILESERVER\litplus\00000098b8128a401";D2000\Share_Litplus_read;ReadAndExecute, Synchronize;True
"\\FILESERVER\litplus\00000098b8128a401";D2000\Share_Litplus_write;Modify, Synchronize;True
"\\FILESERVER\litplus\01ab8692ea13dbe03";D2000\Share_Litplus_read;ReadAndExecute, Synchronize;True
"\\FILESERVER\litplus\01ab8692ea13dbe03";D2000\Share_Litplus_write;Modify, Synchronize;True
"\\FILESERVER\litplus\01ab8692ea13deb06";D2000\Share_Litplus_read;ReadAndExecute, Synchronize;True
"\\FILESERVER\litplus\01ab8692ea13deb06";D2000\Share_Litplus_write;Modify, Synchronize;True

Ich versuche die Datei mit LOAD DATA INFILE zu importieren.

LOAD DATA INFILE 'C:/Scripts/Berechtigungsaudit/Shares/2024/litplus_ntfs_2024-10-16.csv' 
INTO TABLE FileShare 
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(FolderPath, IdentityReference, FileSystemRights, IsInherited);

Aber aus den Pfaden wird aus

"\\FILESERVER\litplus\00000098b8128a401"

z.B das

"\FILESERVERlitplus00000098b8128a401"

Die Backslashes gehen also einfach verloren. Wie importiere ich die Datei so das genau die Pfade in der Datenbank stehen?

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Du kannst versuchen, die Daten erst in eine temporäre Tabelle zu speichern und danach daraus auslesen und die Zeichen ersetzt in deine richtige Tabelle speichern.

CREATE TEMPORARY TABLE TempFileShare (
    FolderPath VARCHAR(255),
    IdentityReference VARCHAR(255),
    FileSystemRights VARCHAR(255),
    IsInherited VARCHAR(255)
);
LOAD DATA INFILE 'C:/Scripts/Berechtigungsaudit/Shares/2024/litplus_ntfs_2024-10-16.csv' 
INTO TABLE FileShare 
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(FolderPath, IdentityReference, FileSystemRights, IsInherited);
INSERT INTO FileShare (FolderPath, IdentityReference, FileSystemRights, IsInherited)
SELECT 
    REPLACE(FolderPath, '', '') as FolderPath,
    IdentityReference,
    FileSystemRights,
    IsInherited
FROM TempFileShare;
von (619 Punkte)  
0 Pluspunkte 0 Minuspunkte

Wenn du die Backslashes in der Datenbank stehen haben möchtest, dann brauchst du sie nicht als Steuerzeichen behandeln. Versuche

ESCAPED BY '\\'

zu

ESCAPED BY ''

zu ändern.

von (716 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

12 Nutzer