我有一堆文本文件,其中的电话号码由回车符分隔。我知道这些都是数字。我想将所有这些数字插入到我的SQL数据库中的表中。但问题是文本文件以第一个数字开头;不是列名。这意味着每次我尝试插入数据时都不知道列名。
为了澄清这一点,我向您展示了我写的SQL:
INSERT into dbo.IranCellPhoneNumbers
SELECT PostalCode = null, mobile as Number,CityId= 20
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=D:\Projects\Sepanta\ExcelImporter\ExcelImporter\bin\Debug\k1\,
'SELECT * FROM etebari.txt')
我将postalCode设置为null,因为我希望表定义匹配。并设置CityId硬编码,因为我知道我的意思是哪个城市。但问题是数字列..它不匹配,因为文本文件以数字而不是“移动”列名开头。
如果我希望此代码有效,那么在插入之前我必须打开这些文本文件并在列表顶部添加“mobile”,这是不可取的。
你有什么建议?
答案 0 :(得分:1)
尝试使用类似于此处评论的内容
即。这些方面的东西:
"Text;Database=D:\Projects\Sepanta\ExcelImporter\ExcelImporter\bin\Debug\k1\;Extended Properties="Excel 12.0;HDR=No"
此处有更多样本:
http://www.codeproject.com/Articles/37055/Working-with-MS-Excel-xls-xlsx-Using-MDAC-and-Oled
或运行此DOS命令以自动添加标题:
COPY HEADERFILE.TXT + YourFile.TXT OUTPUTFILE.TXT
其中HEADERFILE.TXT包含标题和回车
并且通常不具备国家特定表格的表格设计,但这是另一个故事。
答案 1 :(得分:0)
您不需要列名。就这样做:
INSERT into dbo.IranCellPhoneNumbers
SELECT PostalCode = null, *, CityId= 20
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=D:\Projects\Sepanta\ExcelImporter\ExcelImporter\bin\Debug\k1\;HDR=NO',
'SELECT * FROM etebari.txt')