2016-05-25 7 views
1

Ich verwende BCP, weil ich einige Spalten einer Tabelle exportieren möchten:BCP Import ausschließen identifizieren oder eine Spalte

bcp "SELECT csusUsageDate, csusType, csusTrack1, csusTrack2, csusTrack3, csusDateReaded, csusLoggedIn FROM [DbJamaica].[dbo].[CS_Usage]" queryout "C:\temp\CS_Usage.txt" /U.. /P.. -c -T 

Hier habe ich meine Primärschlüssel ausschließen, jetzt möchte ich diese txt importieren und ich möchte dass meine primäre Schlüssel wird automatisch generiert werden:

bcp DbJamaica.dbo.CS_Usage out "C:\temp\CS_Usage.txt" /U.. /P.. -c -T 

ich habe immer formatiert nicht gültig, warum? Ich habe auch Format-Datei verwendet, aber ich habe den gleichen Fehler. Das ist meine Frage: Wie kann ich die identify-Spalte oder einige Spalten ausschließen?

Antwort

1

Sie können nicht, soweit ich weiß. Bcp im Grunde Masse fügt blind in eine Tabelle, wenn die Spalten nicht übereinstimmen, erhalten Sie einen Fehler. Was Sie tun können, ist allerdings eine Staging-Tabelle erstellen wie:

SELECT TOP 0 csusUsageDate, csusType, csusTrack1, csusTrack2, csusTrack3, csusDateReaded, csusLoggedIn 
INTO [DbJamaica].[dbo].[CS_Usage_TEMP] 
FROM [DbJamaica].[dbo].[CS_Usage] 

Dann können Sie bcp auf dem Staging-Tabelle verwenden:

bcp DbJamaica.dbo.CS_Usage_TEMP out "C:\temp\CS_Usage.txt" /U.. /P.. -c -T 

Weiter Sie die Daten aus dem Staging auf den tatsächlichen einfügen Tabelle, wo Sie die PK-Spalte als IDENTITY gesetzt:

INSERT INTO DbJamaica.dbo.CS_Usage (csusUsageDate, csusType, csusTrack1, csusTrack2, csusTrack3, csusDateReaded, csusLoggedIn) 
SELECT csusUsageDate, csusType, csusTrack1, csusTrack2, csusTrack3, csusDateReaded, csusLoggedIn 
FROM  DbJamaica.dbo.CS_Usage_TEMP 

Und schließlich Bereinigung:

DROP TABLE DbJamaica.dbo.CS_Usage_TEMP

Verwandte Themen