Sql server 在SQL Server中加载大文本文件
我想加载一个非常大的文件,3GB的文本(不是逗号分隔的)只是一个文本,这样文本中的每一行都成为一条记录 我的桌子结构应该是这样的 可加载 ID bigint标识 TLine varchar(最大值) 我尝试使用SQL任务导入数据,但总是出现此错误Sql server 在SQL Server中加载大文本文件,sql-server,flat-file,Sql Server,Flat File,我想加载一个非常大的文件,3GB的文本(不是逗号分隔的)只是一个文本,这样文本中的每一行都成为一条记录 我的桌子结构应该是这样的 可加载 ID bigint标识 TLine varchar(最大值) 我尝试使用SQL任务导入数据,但总是出现此错误 执行(错误)消息错误0xc02020a1:数据流任务1:数据转换失败。返回了列“0”的数据转换 状态值4和状态文本“文本被截断或一个或多个 目标代码页中的字符不匹配。“。(SQL Server导入 和导出向导) 错误0xc020902a:数据流任务
- 执行(错误)消息错误0xc02020a1:数据流任务1:数据转换失败。返回了列“0”的数据转换 状态值4和状态文本“文本被截断或一个或多个 目标代码页中的字符不匹配。“。(SQL Server导入 和导出向导)
如何修复此错误并将每一行作为ID显示行顺序的记录加载?VARCHAR(最大)列(行)的最大存储大小为2Gb: varchar[(n | max)]可变大小字符串数据。使用n来定义 字符串大小(以字节为单位),可以是1到8000之间的值,也可以使用 最大值表示列约束大小最大存储空间 2^31-1字节(2 GB)
(出于演示目的,我使用了) 您可以运行批量插入查询,而不是在SSMS中使用用户界面,如下所示:
SELECT
ROW_NUMBER() over (ORDER BY (SELECT NULL)) ROW_NR
, *
INTO MyTable
FROM OPENROWSET
(BULK N'C:\..\Desktop\big.txt', FORMATFILE=N'C:\..\Desktop\big_format_file.xml') tmp
但是,您需要先做几件事:
尽管这是一个示例文档,但请确保终止符选项已设置了您希望用作行分隔符的正确终止符
MyTable
从现在开始,您可以使用SELECT INTO将信息持久化到新表中,使用INSERT将新行添加到现有表中,甚至使用UPDATE将列更新到现有表中MyTable
的内容如下所示:
创建格式文件的一个简单解决方法是在数据库中创建一个表,您希望输入数据具有的结构是:
OPENROWSET()查询中的文件格式