admin

将固定宽度的文本导入SQL

sql

我们有以下格式的记录:

99 0882300 25 YATES ANTHONY V MAY 01 12 04 123456 12345678

宽度是固定的,我们需要将其导入SQL。我们尝试了批量导入,但由于未将’,’或’\
t’分开,因此无法正常工作。它在文本文件中由各个长度的各个空格分隔开,这就是我们的难题所在。

有关如何处理此问题的任何建议?谢谢!


阅读 226

收藏
2021-05-10

共1个答案

admin

当您对SQL感到比导入工具更熟悉时,可以将文件批量导入到临时表中的单个VARCHAR(255)列中。然后使用SQL处理所有记录并将其转换为目标表:

CREATE TABLE #DaTable(MyString VARCHAR(255)) 
INSERT INTO #DaTable(MyString) VALUES ('99 0882300 25 YATES ANTHONY V MAY 01 12 04 123456 12345678')

INSERT INTO FInalTable(Col1, Col2, Col3, Name)
SELECT CAST(SUBSTRINg(MyString, 1, 3) AS INT) as Col1,
    CAST(SUBSTRING(MyString, 4, 7) AS INT) as Col2,
    CAST(SUBSTRING(MyString, 12, 3) AS INT) as Col3,
    SUBSTRING(MyString, 15, 6) as Name
FROM #DaTable

result: 99  882300  25  YATES
2021-05-10