目前,我们在 SQL Server 2000 上有一个 DTS 包,它导入一个名为 suicoweb.csv 的文件。DTS csv 文件属性页面如下所示。
这是来自 CSV 文件的示例行
500071;343497;260712;|Some Text; : employer : some more text|;29
Run Code Online (Sandbox Code Playgroud)
列由分号 (;) 分隔,文本限定符是管道 (|),行由回车符分隔
使用 Brownstone 先生的回答,我使用以下命令创建了一个格式文件:
bcp databasename.dbo.tablename 格式 nul -c -fd:\formatfile.fmt -T
这是该文件的输出:
9.0
18
1 SQLCHAR 0 510 "|" 1 web1numdoss
2 SQLCHAR 0 510 "|" 2 web1dem
3 SQLCHAR 0 510 "|" 3 web1def
4 SQLCHAR 0 510 "|" 4 web1douv
5 SQLCHAR 0 510 "|" 5 web1dversjj
6 SQLCHAR 0 510 "|" 6 web1dversmm
7 SQLCHAR 0 510 "|" 7 web1dversaa
8 SQLCHAR 0 510 "|" 8 web1mntvers
9 SQLCHAR 0 510 "|" 9 web1soldos
10 SQLCHAR 0 510 "|" 10 web1dactjj
11 SQLCHAR 0 510 "|" 11 web1dactmm
12 SQLCHAR 0 510 "|" 12 web1dactaa
13 SQLCHAR 0 510 "|" 13 web1actnat
14 SQLCHAR 0 510 "|" 14 web1actlib
15 SQLCHAR 0 510 "|" 15 web1archdoss
16 SQLCHAR 0 510 "|" 16 web1numdem
17 SQLCHAR 0 510 "|" 17 web1numdef
18 SQLCHAR 0 510 "\r\n" 18 Col018
Run Code Online (Sandbox Code Playgroud)
我用管道(|)替换了 \t 因为这是我想用作文本限定符的东西。
然后我使用这个 BULK INSERT 命令导入:
BULK INSERT ScpCambron.dbo.suicoweb1
FROM 'D:\SqlFtp\scpcambron\suicoweb1.txt'
WITH
(
FIELDTERMINATOR = ';',
ROWTERMINATOR = '\n',
FORMATFILE='D:\SqlFtp\scpcambron\suicoweb1.fmt'
)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 BULK INSERT 命令导入 csv 文件时,出现以下错误:
消息 4864,级别 16,状态 1,第 1 行,第 2 行第 1 列 (web1numdoss) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。
关于如何修改格式文件以正确导入 csv 文件的任何建议?我应该使用 BCP 来导入我的表的 csv 文件吗?
根据您的描述,听起来您需要为 BULK INSERT 命令提供一个格式文件,以便它知道如何解析您的数据。您可以使用 bcp 命令为您自动生成一个,但是在它们正常工作之前我总是不得不在之后编辑它们。(恐怕要进行大量测试)。
以下链接应该是您的良好起点:
格式文件: http : //msdn.microsoft.com/en-us/library/ms190393.aspx
BCP: http : //msdn.microsoft.com/en-us/library/ms162802.aspx
批量插入: http : //msdn.microsoft.com/en-us/library/ms188365.aspx
示例: http : //msdn.microsoft.com/en-us/library/ms178129.aspx
我希望这可以帮助你。
编辑
根据您在上面添加的额外信息,您似乎已将所有字段终止符设置为管道,这不是您想要的。您需要按列编辑格式文件。
例如,在上面的示例中,前两列由分号分隔。第三个需要用“;|”分隔。这是我对前几列的意思的示例:
9.0
18
1 SQLCHAR 0 510 ";" 1 web1numdoss
2 SQLCHAR 0 510 ";" 2 web1dem
3 SQLCHAR 0 510 ";|" 3 web1def
...
18 SQLCHAR 0 510 "\r\n" 18 Col018
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4643 次 |
最近记录: |