簡體   English   中英

將數據從文本文件導入sql表

[英]import data from text file into sql table

我在文本文件(field1,field2,fiel3,field4),(field1,field2,fiel3,field4)中有數據,...我想在sql server表中導入它。.plz幫助

 (699,429,1,'2000-11-30 04:34:16'),(699,2170,2,'2000-11-30 04:07:23'),(699,2171,2,'2000-11-30 04:21:44'),(699,919,4,'2001-04-05 03:21:50'),(699,3160,5,'2000-11-30 04:16:29'),(699,1250,3,'2001-04-05 03:18:20') 

請嘗試以下操作:

BULK INSERT DBNAME.dbo.TABLENAME FROM  FULLPATH  WITH (KEEPIDENTITY,  FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' )

請記住填寫您的數據庫名稱,表名稱和FullPath。

希望這可以幫助。

從文本文件中讀取數據,然后將其首先放入SQL Server。 然后嘗試使用t-sql中提供的所有功能來操縱它。

我會做類似...的事情。

詢問

DECLARE @FileTable TABLE (FileData NVARCHAR(MAX))

INSERT INTO @FileTable
SELECT BulkColumn 
FROM OPENROWSET(BULK N'C:\Path_to_Text_File\Test_Text_FIle.txt', SINGLE_CLOB) AS Contents

;WITH CTE AS(
 SELECT REPLACE(
         REPLACE(
           REPLACE(
              REPLACE(FileData, '),(', '|')
               , '(', '') 
             , ')', '')
            , '''', '')   AS TextData
              FROM @FileTable
 ),Column_Split AS
 (
 SELECT CONVERT(XML,'<Columns><Column>'  
   + REPLACE(val,',', '</Column><Column>') + '</Column></Columns>') [Columns]
 FROM CTE C CROSS APPLY dbo.split(c.TextData, '|')
)
SELECT      
   [Columns].value('/Columns[1]/Column[1]','varchar(100)') AS Column1,    
   [Columns].value('/Columns[1]/Column[2]','varchar(100)') AS Column2,
   [Columns].value('/Columns[1]/Column[3]','varchar(100)') AS Column3,
   [Columns].value('/Columns[1]/Column[4]','varchar(100)') AS Column4
 FROM Column_Split

結果

╔═════════╦═════════╦═════════╦═════════════════════╗
║ Column1 ║ Column2 ║ Column3 ║       Column4       ║
╠═════════╬═════════╬═════════╬═════════════════════╣
║     699 ║     429 ║       1 ║ 2000-11-30 04:34:16 ║
║     699 ║    2170 ║       2 ║ 2000-11-30 04:07:23 ║
║     699 ║    2171 ║       2 ║ 2000-11-30 04:21:44 ║
║     699 ║     919 ║       4 ║ 2001-04-05 03:21:50 ║
║     699 ║    3160 ║       5 ║ 2000-11-30 04:16:29 ║
║     699 ║    1250 ║       3 ║ 2001-04-05 03:18:20 ║
╚═════════╩═════════╩═════════╩═════════════════════╝

分割功能定義

CREATE FUNCTION [dbo].[split](  
  @delimited NVARCHAR(MAX),  
  @delimiter NVARCHAR(100)  
) RETURNS @t TABLE (id INT IDENTITY(1,1), val NVARCHAR(MAX))  
AS  
BEGIN  
  DECLARE @xml XML  
  SET @xml = N'<t>' + REPLACE(@delimited,@delimiter,'</t><t>') + '</t>'  

  INSERT INTO @t(val)  
  SELECT  r.value('.','varchar(MAX)') as item  
  FROM  @xml.nodes('/t') as records(r)  
  RETURN  
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM