Ignorieren Sie die Zeilenumbrüche zwischen den Abgrenzern beim Importieren der TXT -Datei in SQL ServerC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Ignorieren Sie die Zeilenumbrüche zwischen den Abgrenzern beim Importieren der TXT -Datei in SQL Server

Post by Anonymous »

Ich habe eine ausgrenzende Datei, die ich in SQL Server importieren möchte. Die Spaltendaten sind leider nicht qualifiziert, und ich kann keine neue Kopie der an mich gesendeten Datei erhalten. Leider bedeutet dies, dass die Benutzer bei der Eingabe von Daten in das Feld in die Wagenrenditen/Zeilenbrüche eingeben konnten. Dies sollte nur 2 Datensätze sein, importiert jedoch aufgrund der Linienbrüche oder dessen versteckter Zeichen als 4 Datensätze für dieses < /p>

Code: Select all

CONTACT_SOURCE_ID|LAST_UPDATED|LAST_UPDATED_BY|T92|D10|T94|T95|T96|T97|T98|T99|T100|T101|T124|T125|T126
72|05/01/2006 14:48:38|13|||Mr|S|BLOGGS|1 Random Building
Random Street|Random Town||Random County|RN1 2DM|||
74|05/01/2006 15:48:38|31|||Dr|Delta|Who|The
Tardis|SpaceAndTime||Universe|D1 0WW|||
< /code>
Ich muss diese versteckten Zeilenumbrüche irgendwie entfernen, ohne die Zeilenpausen als reale Zeilenanminatoren zu entfernen (ansonsten führt sie nur zu einem (sehr langen) Datensatz. Also im Wesentlichen eine Methode zum Entfernen aller Zeilenpausen zwischen zwei Spalten -Delimitern. 15) und wenn es weniger als 15 ist, ersetzen Sie in der Zeile einen Ersatz, um \ n 
, \ r und Umgebung zu entfernen.

Code: Select all

const Int32 BufferSize = 128;
string fileName = @"C:\Work\OriginalFile.txt";
string outputFile = @"C:\Work\NewFile.txt";
int numColBreaks = 0;

using (var fileStream = File.OpenRead(fileName))
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize))
{
String line;

while ((line = streamReader.ReadLine()) != null)
{
numColBreaks = 0;

foreach (char c in line)
{
if (c == '|')
{
numColBreaks++;
}
}

if (numColBreaks != 15)
{
line.Replace(Environment.NewLine, " ").Replace("\n", " ").Replace("\r", " ");
}

using (StreamWriter sw = File.AppendText(outputFile))
{
sw.WriteLine(line);
}
}
}
Aber das hat nicht funktioniert.

Code: Select all

BULK INSERT dbo.TargetTable
FROM 'C:\Work\OriginalFile.txt'
WITH (
FORMAT = 'CSV'
, FIELDTERMINATOR = '|'
, ROWTERMINATOR = '\n'
, FIRSTROW = 2
)
Aber ich weiß nicht, wie ich das tun werde, insbesondere angesichts dieser Textdatei enthält über 600.000 Datenzeilen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post