Mic*_*elD 6 sql t-sql bcp sql-server-2005 sql-server-2008
我有一个csv文件,我需要将它导入到sql 2005或2008中的表中.csv中的列名和计数与表列名和计数不同.csv被';'拆分 .
例
CSV FILE内容:
FirstName;LastName;Country;Age
Roger;Mouthout;Belgium;55
Run Code Online (Sandbox Code Playgroud)
SQL人员表
Columns: FName,LName,Country
Run Code Online (Sandbox Code Playgroud)
使用bcp导入时可以使用格式文件:
为您的表创建一个格式文件:
bcp [table_name] format nul -f [format_file_name.fmt] -c -T
9.0
4
1 SQLCHAR 0 100 "," 1 FName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "," 2 LName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 3 Country SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 100 "\r\n" 0 Age SQL_Latin1_General_CP1_CI_AS
Run Code Online (Sandbox Code Playgroud)
编辑导入文件.诀窍是为要跳过的字段添加虚拟行,并添加"0"作为服务器列顺序.
然后使用此格式文件导入数据,指定输入文件,此格式文件和分隔符:
bcp [table_name] in [data_file_name] -t , -f [format_file_name.fmt] -T
Run Code Online (Sandbox Code Playgroud)
我创建了一个临时表,批量插入该批次,在新表中选择您需要的内容并删除临时表.
就像是
CREATE TABLE dbo.TempImport
(
FirstName varchar(255),
LastName varchar(255),
Country varchar(255),
Age varchar(255)
)
GO
BULK INSERT dbo.TempImport FROM 'PathToMyTextFile' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n')
GO
INSERT INTO dbo.ExistingTable
(
FName,
LName,
Country
)
SELECT FirstName,
LastName,
Country
FROM dbo.TempImport
GO
DROP TABLE dbo.TempImport
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63501 次 |
| 最近记录: |