我必须将具有不同名称(如下所示)的文本文件导入SQL Server 2008。
文件名始终以XYZ开头,且数字始终高于之前的文件。
文件格式为固定宽度,采用UTF-8编码。
SHINST 1020130613
SHINSD0745860182650 940PI67100000 dataw11 2012CH 01002601900100 848CRU
SHINSD0745860182650 940PI67066900 dataa12 9434CH 00701801400030 848CRU
SHINSD0745860182650 940PI67160300 adsfaf13 1205CH 04203601000160 848CRU
SHINSD0745860182650 940PI67171300 data 14 1205CH 01803501200120 848ND1
SHINSD0745860182650 940PI67079000 asdfs15 8400CH 00702601400040 848ND1
SHINSD0745860182620 940PI67053900 data 16 6877CH 01904101100130 848ND1
SHINSD0745860182620 940PI67156100 text 17 3003CH 08906202902460 848ND2
SHINSD0745860182650 940PI67110700 alskdjf18 1000CH 02603900900130 848ND2
SHINSD0745860182620 940PI67123900 asfasdffa19 8048CH 01502300900020 848ND2
SHINSD0745860182650 940PI67066300 data 20 8952CH 01002601900090 848ND2
SHINSF000012
第一行包含SHINST
,然后是文件中的记录数,然后是YYYYMMDD
格式的日期。
记录包含SHINSD
,然后是13位数字,然后是固定宽度记录。
最后一行包含SHINSF
,然后是一个六位数字,包含文件的总行数。
我想自动将此格式的文件导入SQL表。怎么办?
答案 0 :(得分:0)
您可以尝试:
BULK INSERT tablename FROM 'c:\File.txt' WITH (FIELDTERMINATOR = ' ')
如果''(空格)是你的字段分隔符。
当然,表格表名列必须与文件中的相同(计数和长度)。
您可以创建一个过程并仅为其提供文件路径,如exaples
唯一的问题是文件中的第一行和最后一行,因为它们不同而且我不知道你是否需要插入mas。如果你需要忽略它们,也许你需要一个脚本来消除它们。