Avatar billede montago Praktikant
29. januar 2009 - 08:50 Der er 1 kommentar og
1 løsning

Problemer med SqlBulkCopy (string to datetime)

Jeg forsøger mig med at lave en bulk-copy operation ned i min database...

jeg har 102 datafiler som skal puttes ned i 102 tabeller - omkring 7.7 GB (40mio rækker)

jeg har brug for lidt hjælp undervejs, idet nogle fejl ikke er til at google sig igennem

mit første problem er string to datetime conversion som fejler.
obs: mit windows er dansk, serveren er engelsk

formatet i tekstfilen er "YYYYMMDD" hvilket virker 100% hvis jeg laver laver en INSERT direkte på tabellen i stedet for...

Hilfe !
Avatar billede montago Praktikant
29. januar 2009 - 08:52 #1
lidt kode:


SqlConnection conn = new SqlConnection(Program.dbConn);
conn.Open();

if (deleteTables)
{
    CleanTables(conn);
}

foreach (var dv in DATSpecificationList)
{
    StreamReader sr = new StreamReader(dv.Value.DestinationTable + ".tbl", Encoding.GetEncoding("ISO-8859-1"));
    SqlBulkCopy bc = null;
    DataTable dt = GetDataTable(dv);

    DataRow row;
    while (!sr.EndOfStream)
    {
        string line = sr.ReadLine();
        if (line.Length == 0)
            break;

        row = dt.NewRow();
        row.ItemArray = line.Split('|');
        dt.Rows.Add(row);

        if (dt.Rows.Count == 50000)
        {
            bc = new SqlBulkCopy(conn, SqlBulkCopyOptions.TableLock, null);
            bc.BatchSize = dt.Rows.Count;
            bc.DestinationTableName = "[" + dv.Value.DestinationTable + "]";
            bc.WriteToServer(dt);
            dt = GetDataTable(dv);
            bc.Close();
        }
    }

    bc = new SqlBulkCopy(conn, SqlBulkCopyOptions.TableLock, null);
    bc.BatchSize = dt.Rows.Count;
    bc.DestinationTableName = "[" + dv.Value.DestinationTable + "]";
    bc.WriteToServer(dt);
    bc.Close();
}
conn.Close();
Avatar billede montago Praktikant
29. januar 2009 - 10:47 #2
hmm... man skal åbenbart definere alle colums pr type... + convert alle colums til rette type før den kan æde dataene !!

FFS !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Udviklings- og Forenklingsstyrelsen

Testmanager til Partsrepræsentation

Danmarks Meteorologiske Institut

IT-operatør søges til DMI

Unik System Design A/S

Head of Internal IT