我正在尝试将许多文本文件中的数据导入到SQL Server数据库中。
我对在所有文件上运行SQL的批处理感到满意,但是我正在努力使SQL正常工作。
文本文件的格式为:
UNWANTED TEXT UNWANTED TEXT UNWANTED TEXT
UNWANTED TEXT UNWANTED TEXT UNWANTED TEXT
UNWANTED TEXT UNWANTED TEXT UNWANTED TEXT
Field1,Field2,Field3,Field4
UNWANTED TEXT UNWANTED TEXT UNWANTED TEXT
UNWANTED TEXT UNWANTED TEXT UNWANTED TEXT
UNWANTED TEXT UNWANTED TEXT UNWANTED TEXT
麻烦的是,文本文件中的字段与表字段的顺序不匹配,并且我不想导入所有数据。
我的桌子看起来像:
ID (int - autoincrement) | Field3 (nvarchar) | Field1 (datetime) | ImportDate (datetime) | Text from whole text file for reference (nvarchar)
因此,我的要求是将字段3放置在表的第2列中,将字段1放置在表的第3列中。
我的SQL看起来像:
USE FOO_DB
BULK INSERT dbo.BarTable
WITH
(
FORMATFILE = 'C:\format.txt'
FIELDTERMINATOR = ',',
FIRSTROW = 13
)
我的format.txt文件如下所示:
10.0
5
1 SQLCHAR 0 24 "," 3 Field1 Latin1_General_CI_AS
2 SQLCHAR 0 100 "" 0 ID ""
3 SQLCHAR 0 100 "," 2 Field3 Latin1_General_CI_AS
4 SQLCHAR 0 100 "" 0 ImportDate ""
5 SQLCHAR 0 24 "" 0 FileText ""
尝试导入时,我得到:
0 rows affected
如果我摆弄FIRSTROW值,偶尔会得到以下负载:
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 1 (Field 3)
我读到FIRSTROW不从实际文件的第一行算起,而是包含字段分隔符的第一行?如果是这样,我的数据前只有逗号的行是第4行。我的数据在第13行-中间没有逗号的行。
如果我删除文本文件中除所需的逗号分隔内容之外的所有数据,然后将FIRSTROW调整为1,则会得到:
Bulk load: An unexpected end of file was encountered in the data file
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
您最好将数据导入到临时表中,然后使用简单的SELECT INTO语句重新排列列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句