2016-05-24 9 views
0

Ich habe Daten in einer separaten Datei in diesem Format: (Screenshot einer Textdatei in Notepad)Wie zum Importieren von Daten in SQL Server 2008

enter image description here

Wie kann ich es in einen SQL Server importieren Datenbanktabelle (vorhandene Datenbank)?

+1

Verwenden Sie SQL Server Import/Export-Assistenten oder verwenden Sie SSIS. Möglicherweise müssen Sie die Daten vor der Verarbeitung aufräumen – bmsqldev

+0

Warum erstellen Sie keinen Code dafür. d.h. Daten aus der Datei lesen und in die Datenbank einfügen. –

+0

Bedeutet ein Klickereignis mit Einfügeabfrage und dem Speichern von Ländern, benennen Sie erneut seine Stadt (beide in separaten Tabellen)? Recht? @AkashAmin – Iqra

Antwort

2

Bitte versuchen Sie die folgende Abfrage.

IF OBJECT_ID('tempdb..#Temp') IS NOT NULL 
DROP TABLE #Temp 
CREATE TABLE #Temp 
    (
     Country Varchar(50), 
     City Varchar(50) 
    ) 

BULK INSERT #Temp 
FROM 'C:\coci.txt' 
WITH 
(
FIELDTERMINATOR = '^', 
ROWTERMINATOR = '\n' 
) 

SELECT REPLACE(Country,'"','') AS Country,REPLACE(City,'"','') AS City FROM #Temp t 
+0

Vielen Dank. es funktionierte – Iqra

+0

Können Sie mir bitte sagen, wo diese Spalten gespeichert sind und wie kann ich sie in meine vorhandene Datenbank aufnehmen? – Iqra

1

Bitte verwenden Sie den folgenden Code. Seine adaequat mit SQL Server 2012.

DECLARE 
@TableName VARCHAR(128), 
@FileName VARCHAR(100), 
@filepath VARCHAR(500), 
@Pattern VARCHAR(100), 
@Query NVARCHAR(1000) 

SET @filepath ='C:' 
SET @Pattern ='txt' 

IF OBJECT_ID('tempdb..#FileNames') IS NOT NULL 
DROP TABLE #FileNames 

CREATE TABLE #FileNames 
(ID INT IDENTITY, 
    FileNames VARCHAR(200) 
) 

SET @query ='xp_cmdshell ''dir '[email protected]+'\*.'[email protected] +' /b''' 
INSERT INTO #FileNames EXEC (@Query) 
DELETE FROM #FileNames WHERE FileNames is NULL 
SET @FileName = (SELECT FileNames from #FileNames WHERE FileNames LIKE '%coci%') 

IF OBJECT_ID('tempdb..#Temp') IS NOT NULL 
    DROP TABLE #Temp 
CREATE TABLE #Temp 
    (
     Country Varchar(100), 
     City Varchar(100), 
    ) 

BEGIN 
    SET @Query ='BULK INSERT #Temp FROM '''+ @FilePath+'\'[email protected]+'''WITH (DATAFILETYPE=''char'', FIELDTERMINATOR=''^'', ROWTERMINATOR = ''\n'',FIRSTROW = 1)' 
    EXEC (@Query) 
    SELECT REPLACE(Country,'"','') AS Country,REPLACE(City,'"','') AS City FROM #Temp t 
END 

SET @filepath variables Feld auf den Pfad, wo Sie Ihre txt Datei gehalten

+0

wo sollte ich diesen Code platzieren. Eigentlich bin ich Anfänger. Bitte führen Sie mich ein bisschen mehr – Iqra

+0

Sie können diesen Code in SQL Server Management Studio ausführen. Das einzige, was Sie tun müssen, ist SET @filepath = 'Pfad, wo Ihre TXT-Datei platziert ist' –

+0

sollte ich ** neue Abfrage ** Bereich wählen und dann Code dort drüben und klicken Sie einfach ** Ausführen ** nach dem Ändern @ Dateipfad? – Iqra

0

Sie können Bulkbefehl zu import data from text file into SQL Server database table

BULK INSERT StagingTable FROM 'c:\textfile.txt' 

verwenden Sie können Daten in eine Staging-Tabelle einfügen (denken Sie als temporäre Tabelle) und in die endgültige Zieltabelle einfügen, nachdem Sie die Rohdaten aus der Staging-Tabelle

aufgeteilt haben 210

Sie können auch SQL Server Import & Export wizard to import data in SQL Server verwenden. Wenn Sie ein SSIS-Paket erstellen, können Sie es später wiederholt verwenden.

+0

Diese Abfrage funktioniert nicht für SQL Server 2008 über asp.net framework insert command – Iqra

+0

Ist es möglich, dass Sie den Code in einer Stored Procedure platzieren und führen Sie es – Eralper

+0

ich tat es erfolgreich alhamdullilah. Können Sie mir bitte sagen, wie kann ich jetzt diese #Temp-Zeilen in meine vorhandene Datenbank einfügen – Iqra

0

Bitte versuchen Sie diese Bulk-Insert-Option.

CREATE TABLE #Temp 
    (
     Country Varchar(50), 
     City Varchar(50) 
    ) 

BULK INSERT tempdb.dbo.#Temp 
FROM 'C:\data\test.txt' 
WITH 
(
FIELDTERMINATOR = '^', 
ROWTERMINATOR = '\n' 
) 
+0

Datenbankname 'Tempdb' ignoriert, Referenzierungsobjekt in Tempdb. Msg 2714, Ebene 16, Status 6, Zeile 1 In der Datenbank befindet sich bereits ein Objekt mit dem Namen "#Temp". – Iqra

+0

Ich erhalte diesen Fehler, wenn ich ** diese Abfrage führe – Iqra

+0

Ja, bitte fallen und neu erstellen Sie die Tabelle #temp – Antony