首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出到与Server兼容的格式

问导出到与Server兼容的格式
EN

Database Administration用户
提问于 2016-09-26 09:17:01
回答 2查看 1.9K关注 0票数 5

我需要以可以导入到数据库的格式提供数据;但是,我没有Windows或对Server实例的访问权限。

数据目前在几个CSV电子表格中。我查看了BULK INSERT,但发现他们对CSV的支持非常有限,比如不识别双引号(文档:指定字段和行终止符 )。我已经读过一些边缘情况,比如字段碰巧包含引号(因此需要转义)不受支持。

是否有一种更可靠的中间格式可以从Linux/OSX生成?例如,MySQL转储、Excel、Sqlite等等?

我还需要这个导入过程来创建表,而不需要编码。进口的人是非技术人员。这将是一个一次性的过程。

  • 目标系统是Server 2008,不过理想情况下,我对不绑定到特定版本的解决方案感兴趣。
  • 要导入的数据在一个CSV文件中为100 to。
  • 有嵌入式字段/行分隔符,当这些字段被Python模块引用时,这种分隔符可以很好地工作。
  • 不需要处理外键、索引、约束等。
  • 编码为UTF-8。
  • 源是从目前存储在CSV文件中的德语网页中刮取的数据。如果它是一个可靠的载体,我可以很容易地将它从那里导入到MySQL / Postgres。

我将无法测试导入,因为我无法直接访问Server数据库,因此我正在寻找一种更可靠的方法。例如,MySQL转储、XLS、XML等。

EN

回答 2

Database Administration用户

发布于 2016-09-29 16:47:48

考虑另一种选择:OPENROWSET/SELECT INTO

作为一名DBA,我有时觉得BULK INSERT真的很烦人。使用这段代码,我完全绕过了BULK INSERT/BCP,使用了OPENROWSET和"Microsoft“引擎,后者实际上就是"Office”引擎。当然,我导入了Excel文件,但是CSV非常类似。

在这段代码中,我将文件SQLServerUsageTracker-10-21-2015-11h47m19s.xlsx直接导入到SQLSunSet.dbo.TempServerMap表中--列是由" into“自动生成的。尝试此方法,更改代码以满足您的需要,并查看它是否解决了您正在经历的引用问题。

代码语言:javascript
复制
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER proc [dbo].[spImportMapSQLServers]
     @MapsExcelFile_SQLServerUsageTracker varchar(1000)='C:\Users\solu3m\Documents\MAP\SQL10162015\SQLServerUsageTracker-10-21-2015-11h47m19s.xlsx'
as
declare  @cmdstring varchar(8000) ='select * into SQLSunSet.dbo.TempServerMap from OPENROWSET (''Microsoft.Ace.OLEDB.12.0'', ''Excel 12.0;Database=<MapsExcelFile_SQLServerUsageTracker>'', ''select * from [SQL Server Instance Details$]'')'
set @cmdstring = replace(@cmdstring,'<MapsExcelFile_SQLServerUsageTracker>',@MapsExcelFile_SQLServerUsageTracker)
if exists (select * from sysobjects where type ='u' and name ='TempServerMap') drop table TempServerMap
--print (@cmdstring)
exec (@cmdstring)

您需要在正在完成工作的Server上安装MSAccess/Office引擎。

https://www.microsoft.com/en-us/download/details.aspx?id=13255

注:

如果您决定这样做,您可以使用Windows、SQL Server Developer Edition的评估副本以及在OS上托管Windows的Virtual之类的东西来测试所有这些。这样,您就不必在生产系统上进行任何开发/测试。

别担心,(包括所有特性)现在是免费的:

https://www.microsoft.com/en-us/cloud-platform/sql-server-editions-developers

您可能还需要安装Windows的评估版:

https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2012

如果您需要在Linux、OS或Solaris上虚拟化eval环境,您可以在VirtualBox或其他虚拟化软件上构建Windows的VM:

https://www.virtualbox.org/wiki/Downloads

票数 2
EN

Database Administration用户

发布于 2016-09-26 09:38:25

这个链接提出了处理双引号的建议,同时尝试使用BULK INSERT导入数据,并使用格式文件导入BCP实用工具。

这个链接建议在尝试使用导入数据时处理双商

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/150635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档