从csv文件生成插入SQL语句



insert firebird (10)

你可以试试fbcopyfbexport工具。

https://code.i-harness.com

我需要将一个csv文件导入Firebird ,我花了几个小时尝试一些工具,但没有一个适合我的需求。

主要的问题是我一直在尝试的所有工具,如EMS数据导入Firebird数据向导 ,我希望我的csv文件包含我的表所需的所有信息。

我需要在insert语句中编写一些自定义SQL,例如,我有一个带有城市名称的cvs文件,但由于我的数据库已经有另一个表中的所有城市(规范化),我需要在插入中编写一个子选择查找城市并写入其ID的语句,我也有一个存储过程来创建GUID。

我的Insert语句是这样的:

INSERT INTO PERSON (ID, NAME, CITY_ID) VALUES((SELECT NEW_GUID FROM CREATE_GUID), :NAME, (SELECT CITY_ID FROM CITY WHERE NAME = :CITY_NAME)

我知道写一个应用程序很容易做到这一点,但我不喜欢重新发明轮子,我确信有一些工具可以做到这一点。

你们能给我一些建议吗?



好吧,如果它是一个CSV,这是一次性过程,在Excel中打开文件,然后编写公式以您想要的任何方式填充数据,然后编写一个简单的Concat公式来构建您的SQL,以及然后为每一行复制该公式。 您将获得大量可以在任何地方执行的SQL语句。


您可以使用免费的csvsql来执行此操作。

  • 使用这些说明安装它
  • 现在运行这样的命令将数据导入数据库。 更多细节在上面的链接,但它是这样的:

    csvsql --db firebase:///d=mydb --insert mydata.csv

  • 以下适用于sqlite,是我用来将数据转换为易于查询的格式

    csvsql --db sqlite:///dump.db --insert mydata.csv



我最近尝试过的非常出色的工具是FSQL

编写IMPORT命令,将其粘贴到FSQL ,然后将CSV文件导入Firebird表。


我用awk做这个。

例如,如果您在CSV文件中包含此信息:

Bob,New York
Jane,San Francisco
Steven,Boston
Marie,Los Angeles

以下命令将为您提供所需的内容,并在与CSV文件相同的目录中运行(在此示例中名为name-city.csv )。

$ awk -F, '{ print "INSERT INTO PERSON (ID, NAME, CITY_ID) VALUES ((SELECT NEW_GUID FROM CREATE_GUID), '\''"$1"'\'', (SELECT CITY_ID FROM CITY WHERE NAME = '\''"$2"'\''))" }' name-city.csv

输入awk --help以获取更多信息。


法比奥,

我已经完成了Vaibhav多次做过的事情,这是将数据输入数据库的一种很好的“快速而肮脏”的方式。

如果您需要这样做几次,或者某种类型的计划,那么更可靠的方法是将CSV数据“按原样”加载到工作表(即customer_dataload)中,然后使用标准SQL语句填充缺少字段。

(我不知道Firebird的语法 - 但有点像......)

UPDATE person
SET id = (SELECT newguid() FROM createguid)

UPDATE person
SET cityid = (SELECT cityid FROM cities WHERE person.cityname = cities.cityname)

等等

通常,将数据输入数据库然后修复数据比在上载期间尝试修复数据要快得多(并且更可靠)。 您还可以获得交易的好处,如果它不起作用,您可以回滚!


选项1:1-你试过IBExert吗? IBExpert \ Tools \导入数据(试用版或客户版)。

选项2:2-使用F_BLOBLOAD将csv文件上载到临时表。 3-创建一个存储过程,它使用3个函数(f_stringlength,f_strcopy,f_MID)来交叉你的所有字符串,拉动你的字段来构建你的INSERT INTO。

链接:2: http://freeadhocudf.org/documentation_english/dok_eng_file.htmlhttp://freeadhocudf.org/documentation_english/dok_eng_file.html 3: http://freeadhocudf.org/documentation_english/dok_eng_string.htmlhttp://freeadhocudf.org/documentation_english/dok_eng_string.html






firebird