使用 where 子句将 txt 文件导入 SQL 服务器
Importing a txt file into SQL Server with a where clause
我有一个 .txt
文件,大小为 6.00 GB。它是一个制表符分隔的文件,所以当我尝试将它加载到 SQL 服务器时,列分隔符是制表符。
我需要将该 .txt
文件加载到数据库中,但我不需要 6.00 Gb 文件中的所有行。我需要能够使用
这样的条件
select *
into <my table>
where column5 in ('ab, 'cd')
但这是一个文本文件,在这种情况下我无法将其加载到数据库中。
谁能帮我解决这个问题?
您尝试过使用 BULK INSERT 命令吗?看看这个解决方案:
--Create temporary table
CREATE TABLE #BulkTemporary
(
Id int,
Value varchar(10)
)
--BULK INSERT has no WHERE clause
BULK INSERT #BulkTemporary FROM 'D:\Temp\File.txt'
WITH (FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n')
--Filter results
SELECT * INTO MyTable FROM #BulkTemporary WHERE Value IN ('Row2', 'Row3')
--Drop temporary table
DROP TABLE #BulkTemporary
希望对您有所帮助。
只需将批量插入到暂存 table 中,然后将您实际需要的数据移动到生产中 table。 Where 子句用于根据 SQL 服务器内部的特定条件执行某些操作,而不是用于将数据加载到 SQL 服务器。
我有一个 .txt
文件,大小为 6.00 GB。它是一个制表符分隔的文件,所以当我尝试将它加载到 SQL 服务器时,列分隔符是制表符。
我需要将该 .txt
文件加载到数据库中,但我不需要 6.00 Gb 文件中的所有行。我需要能够使用
select *
into <my table>
where column5 in ('ab, 'cd')
但这是一个文本文件,在这种情况下我无法将其加载到数据库中。
谁能帮我解决这个问题?
您尝试过使用 BULK INSERT 命令吗?看看这个解决方案:
--Create temporary table
CREATE TABLE #BulkTemporary
(
Id int,
Value varchar(10)
)
--BULK INSERT has no WHERE clause
BULK INSERT #BulkTemporary FROM 'D:\Temp\File.txt'
WITH (FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n')
--Filter results
SELECT * INTO MyTable FROM #BulkTemporary WHERE Value IN ('Row2', 'Row3')
--Drop temporary table
DROP TABLE #BulkTemporary
希望对您有所帮助。
只需将批量插入到暂存 table 中,然后将您实际需要的数据移动到生产中 table。 Where 子句用于根据 SQL 服务器内部的特定条件执行某些操作,而不是用于将数据加载到 SQL 服务器。