**EDIT:**如果您面对Exception of type 'System.OutOfMemoryException' was thrown. (mscorlib),您可以创建表格:
USE ip2location;
GO
DROP TABLE OpenStreetMap;
CREATE TABLE OpenStreetMap
(
name nvarchar(MAX) NULL,
alternative_names nvarchar(MAX) NULL,
osm_type nvarchar(MAX) NULL,
osm_id nvarchar(MAX) NULL,
class nvarchar(MAX) NULL,
type nvarchar(MAX) NULL,
lon nvarchar(MAX) NULL,
lan nvarchar(MAX) NULL,
place_rank nvarchar(MAX) NULL,
importance nvarchar(MAX) NULL,
street nvarchar(MAX) NULL,
city nvarchar(MAX) NULL,
county nvarchar(MAX) NULL,
state nvarchar(MAX) NULL,
country nvarchar(MAX) NULL,
display_name nvarchar(MAX) NULL,
west nvarchar(MAX) NULL,
south nvarchar(MAX) NULL,
east nvarchar(MAX) NULL,
north nvarchar(MAX) NULL,
wikidata nvarchar(MAX) NULL,
wikipedia nvarchar(MAX) NULL,
housenumbers nvarchar(MAX) NULL,
);
GO
然后使用BULK INSERT导入:
BULK INSERT OpenStreetMap
FROM 'C:\Users\franc\Desktop\planet-latest_geonames.tsv\planet-latest_geonames-sorted.tsv'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = '\t',
KEEPNULLS
);
2条答案
按热度按时间n3schb8v1#
解决方案 * 很少 *:
1.带有
\t
COLUMNTERMINATOR的T-SQL语句1.带有format file and
\t
terminator的T-SQL函数OPENROWSET(BULK 'file path')
1.具有
-t
参数的bcp刀具(预设值\t
)Delimiters
属性)与{SqlBulkCopy类或SqlCommand类}1.其他解决方案。
注意:对于3)和4),源文件必须由SQL Server示例访问(通常,这意味着源文件必须与SQL Server位于同一台计算机上)
az31mfrm2#
@Bogdan Sahlean给出了非常详尽的回复。
然而,我们都知道,导入任何文件在SQL Server是不容易的,它总是在第一次尝试失败。
如果你像我一样***恼怒***,同时导入一个
.tsv
,像this one一样的重量只有几千兆位,我有一个快速的解决方案给你。在SSMS 2017中,您可以执行以下操作:右键单击数据库〉Tasks〉Import Flat File...(任务〉导入平面文件...),并将所有Data Type(数据类型)设置为
nvarchar(MAX)
,将所有行设置为Allow Nulls
:这样,您将导入数据 * 错误的方式 *,但至少它们是导入的。
您现在可以工作来清理它们。
**EDIT:**如果您面对
Exception of type 'System.OutOfMemoryException' was thrown. (mscorlib)
,您可以创建表格:然后使用BULK INSERT导入:
**EDIT、EDIT:**如果因为表格太大而再次失败,您可以:
1.使用我在上面粘贴的第一个查询创建表
1.在CMD终端上运行以下命令:
bcp ip2location.dbo.OpenStreetMap in C:\Users\franc\Desktop\行星最新地理名称.tsv\行星最新地理名称排序.tsv -S本地主机-U sqlninja -P sqlninja -c -r /r
编辑,编辑,编辑:
仍然失败?让我们尝试
SQLCMD
:1.使用上面的查询创建表
1.将上面的
BULK INSERT
查询保存在一个名为Target.sql
的文件中,然后:sqlcmd -S本地主机-d ip 2位置-U数据库管理程序-P数据库管理程序-i Target.sql -o错误.txt