SQL 导入 psv 文件时导入向导出错

SQL Import Wizard errors on importing a psv file

我正在尝试将 psv(竖线分隔的 csv)导入 Microsoft SQL Server 2008R2 Express 数据库 table。

psv只有两个字段,每个字段都有1000多个字符。

在导入向导中,我有以下设置:

在映射中仔细检查:

注意我在 fail/truncate 上设置了忽略选项:

像往常一样,我得到一个错误:

Error 0xc02020a1: Data Flow Task 1: Data conversion failed. The data conversion for column "Comm" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.". (SQL Server Import and Export Wizard)

更新:

所以,在@Marc 的建议下,虽然 very/extremely 不情愿,但我花了 3 个小时左右终于在我的计算机上安装了 SQL2014,并希望导入 psv。正如预期的那样,错误再次出现:

我真的无法理解为什么像微软这样的公司没有对他们的产品做彻底的QAT?!

被微软折腾了一个上午,终于完成了这个任务,以后的读者可以按照下面的步骤导入一个csv/psv数据源到你的sql :

  1. 将 CSV/PSV 导入 Access 数据库。注意,必须保存为 mdb 类型(是的,20 世纪的类型),您可能想在这里阅读我的故事:

  2. 在您的 SQL(我的是 2014)中,启动导入向导并 select 数据源类型 (ACCESS) 和文件。 为什么要使用mdb类型的access数据库?在这里您会看到 SQL 2014 中没有 accdb 类型访问数据库的选项。

  1. 不要忘记 select 正确的目标(是的,即使您通过右键单击目标数据库并选择导入来启动向导),您想要 select 最后一个选项: SQL 本机客户端 11.0。这将显示 SQL2014 和数据库。

现在可以按预期完成导入了。

感谢这个SQL(2014年?不,与2008年相比基本没有变化)的伟大设计逻辑,多么卑微的期望和要求!我花了 4-5 个小时才完成。

或者,您可以使用批量插入来导入任何平面文件。

if (object_id('dbo.usecase1') is not null)
    drop table dbo.usecase1
go

create table dbo.usecase1
(
    Descr nvarchar(2000) null,
    Comm nvarchar(2000) null
)
go

bulk insert dbo.usecase1
from 'C:\tmp\usecase0.psv'
with (
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
)

BULK INSERT (Transact-SQL)