将txt导入SQL Server

时间:2015-11-26 21:30:25

标签: sql-server database import text-files

我搜索了这么多,我找不到将此txt文件导入SQL服务器的任何解决方案。 它有数字(1),类(A),名称(Eda),姓氏(KKKK),答案1,答案2列。

1AEdaKKKK           ACDBDCABCE,BBCBBACABA
2AİremDudson        BDCEDDCABA,BDCABDEAAA
3ANefisGaga         ADCBDACDBC,AEAEBAAEDA
4ABohoDhae          BDCABDEAAA,ADCDBECBBA

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以导入文件,然后根据条件手动拆分它们。

e.g。我用这段代码测试了它并且它有效

-- CREATE TABLE tmpImport ([col1] NVARCHAR(200), [col2] NVARCHAR(200))
-- BULK INSERT tmpImport FROM 'C:\textfile.txt' WITH (ROWTERMINATOR = '0x0a')
-- CREATE TABLE tblName ([number] INT, [class] CHAR(1), [name] NVARCHAR(50), [lastname] NVARCHAR(50), [answers1] NVARCHAR(50), [answers2] NVARCHAR(50))
-- UPDATE tblImport SET [col1] = LTRIM(RTRIM([col1])), [col2] = LTRIM(RTRIM([col2])) -- maybe not necessary

INSERT tblName ([number], [class], [name], [lastname], [answers1], [answers2])
SELECT SUBSTRING([col1], 1, PATINDEX('%[^0-9]%', [col1]) - 1) -- number
    , SUBSTRING([col1], PATINDEX('%[^0-9]%', [col1]), 1) -- class
    , SUBSTRING([col1], PATINDEX('%[^0-9]%', [col1]) + 1,
                PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]%',
                SUBSTRING([col1], PATINDEX('%[^0-9]%', [col1]) + 2, LEN([col1])) COLLATE sql_latin1_general_cp1_cs_as)) -- firstname
    , SUBSTRING([col1], 
                CHARINDEX(SUBSTRING([col1], PATINDEX('%[^0-9]%', [col1]) + 1,
                PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]%',
                SUBSTRING([col1], PATINDEX('%[^0-9]%', [col1]) + 2, LEN([col1])) COLLATE sql_latin1_general_cp1_cs_as)), [col1]) + LEN(SUBSTRING([col1], PATINDEX('%[^0-9]%', [col1]) + 1,
                PATINDEX('%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]%',
                SUBSTRING([col1], PATINDEX('%[^0-9]%', [col1]) + 2, LEN([col1])) COLLATE sql_latin1_general_cp1_cs_as))), LEN([col1])) -- lastname
    , SUBSTRING([col2], 1, CHARINDEX(',', [col2]) - 1) -- answers1
    , SUBSTRING([col2], CHARINDEX(',', [col2]) + 1, LEN([col2])) -- answers2
FROM tmpImport

-- SELECT * FROM tblName -- check
-- DROP TABLE tmpImport

虽然看起来有些臃肿(可能会变得更简单)。

或者,在导入文件之前放入分隔符然后它变得非常容易。