【发布时间】:2018-04-17 11:48:47
【问题描述】:
我正在尝试将表格数据从 PDF 导入数据库(MS Access 或 SQL Server Express)。数据看起来像这样:
NAME ID EDUCATION YEAR
--------------------------- ---- -------------- --------
Doe, John 123 Elementary 2000
New York, NY H School 2004
Undergrad 2008
--------------------------------------------------------
Furter, Frank 345 Elementary 2010
Los Angeles, CA H School 2014
--------------------------------------------------------
Chiever, Hiya 456 Elementary 2000
Washington, DC H School 2003
Undergrad 2006
Masters 2008
PhD 2010
--------------------------------------------------------
Walker, Julie 234 Elementary 2000
Chicago, IL H School 2004
Undergrad 2008
Masters 2010
--------------------------------------------------------
复制内容并粘贴到 Excel 中,每个项目大约有一行,所以它看起来像这样:
Doe, John
New York, NY
123
Elementary 2000
H School 2004
Undergrad 2008
我希望有任何建议可以将其纳入规范化 RDBMS。我的想法是:
1 - 查看 SQL Server Management Studio 是否仍支持用于数据导入的 javascript 编码(我记得 20 年前做过),但我不记得它是否需要为每条记录定义定义的行数。
2 - 在 Notepad++ 中使用一堆查找和替换命令破解数据,使其变成每人一行。
3 - 使用 Notepad++ 注入 XML 标记并将 XML 导入 RDBMS。
还有其他关于转换/导入的建议吗?我认识一个使用 OmniPage Ultimate 的人,这可能很有用,但我对它的了解还不够,所以决定了哪种方式。我还有一个朋友很了解 Python——这对我来说是一个很好的项目吗?谢谢!
【问题讨论】:
-
您可以将其复制到 Notepad++ 或 SublimeText3(我最喜欢的),发现其中的模式(例如每列由制表符分隔),然后进行正则表达式替换。这是我系统地做的。我通过将数据复制到文本编辑器中来将表导入数据库。然后我找到模式并用几个完全构建的 INSERT 语句替换文本。然后只需将结果复制并粘贴到 SQL 控制台中。
-
这里主要是找到复制文本中的模式。在 SublimeText3 中,我通常选择文本,选项卡表示为线条,空格表示为点。不过,我不知道它在 Notepad++ 中是如何工作的。
-
试图从原始文本中恢复原始格式是错误的方法。首先使用适当的提取工具,例如pdftotext,可以保留布局,然后尝试在结果的基础上进行构建。
标签: python sql-server regex import notepad++