解决方案 »

  1.   

    你参考一下,部分数据需要对应你的真实情况--创建初期导入表
    IF OBJECT_ID('TEMPDB..#TESTTXT')IS NOT NULL
    DROP TABLE TEMPDB..#TESTTXT
    GO
    CREATE TABLE TEMPDB..#TESTTXT(
    COL VARCHAR(MAX)
    )
    --读取TXT
    bulk insert TEMPDB..#TESTTXT
    from 'D:\TEST.txt'--文件路径'd:\kq\kq.txt'
    with
    (FIELDTERMINATOR = '',--字段间分隔符号
    ROWTERMINATOR = '\n'--每条记录分隔符
    )
    --创建中间表
    IF OBJECT_ID('TEMPDB..#TESTTXT2')IS NOT NULL
    DROP TABLE TEMPDB..#TESTTXT2
    GO
    CREATE TABLE TEMPDB..#TESTTXT2(
    ID INT IDENTITY(1,1)
    ,COL VARCHAR(MAX)
    )
    --导入初期数据到中间表
    INSERT TEMPDB..#TESTTXT2
    SELECT * FROM TEMPDB..#TESTTXT WHERE COL IS NOT NULL
    --删除初期导入表
    DROP TABLE TEMPDB..#TESTTXT--创建正式表
    IF OBJECT_ID('A')IS NOT NULL
    DROP TABLE A
    GO
    create TABLE A
    (
     ID INT NOT NULL  IDENTITY(1, 1) PRIMARY KEY,
     anchor_1 float(24) NOT NULL,
     anchor_2 float(24) NOT NULL,
     anchor_3 float(24) NOT NULL,
     anchor_4 float(24) NOT NULL,
     timestamp
    )
    --导入数据到正式表
    INSERT INTO A(anchor_1,anchor_2,anchor_3,anchor_4)
    SELECT
    CAST(SUBSTRING(MAX(CASE WHEN ID%4=1 THEN COL END),2,7)AS DECIMAL(19,2)) anchor_1
    ,CAST(SUBSTRING(MAX(CASE WHEN ID%4=2 THEN COL END),2,7)AS DECIMAL(19,2)) anchor_2
    ,CAST(SUBSTRING(MAX(CASE WHEN ID%4=3 THEN COL END),2,7)AS DECIMAL(19,2)) anchor_3
    ,CAST(SUBSTRING(MAX(CASE WHEN ID%4=0 THEN COL END),2,7)AS DECIMAL(19,2)) anchor_4
    FROM
    TEMPDB..#TESTTXT2
    GROUP BY (ID-1)/4
    --删除中间表
    DROP TABLE TEMPDB..#TESTTXT2--查询最终结果
    SELECT * FROM A
      

  2.   

    要是我就先将TXT导入到EXCEL中 然后筛选分隔符 合适了直接进数据库导入EXCEL文件