将文本文件导入mySQL don';我不知道表数据类型

将文本文件导入mySQL don';我不知道表数据类型,mysql,sql,Mysql,Sql,我想在终端中将一个文本文件导入MySQL。文本文件太大,无法打开和查看,但我知道它是以bar“|”分隔的 我发现一个博客上写着这样做: LOAD DATA INFILE '/tmp/data.txt' INTO TABLE db1.table1 FIELDS TERMINATED BY '|'; 我试过了,但是SQL让我先创建表,我做到了。但我相信它也想知道字段名。在线研究似乎表明,当我制作表格时,我必须指定字段标题及其数据类型 有办法解决这个问题吗?我必须输入大约20个字段名,但我不知道;我

我想在终端中将一个文本文件导入MySQL。文本文件太大,无法打开和查看,但我知道它是以bar“|”分隔的

我发现一个博客上写着这样做:

LOAD DATA INFILE '/tmp/data.txt'
INTO TABLE db1.table1
FIELDS TERMINATED BY '|';
我试过了,但是SQL让我先创建表,我做到了。但我相信它也想知道字段名。在线研究似乎表明,当我制作表格时,我必须指定字段标题及其数据类型

有办法解决这个问题吗?我必须输入大约20个字段名,但我不知道;我甚至不知道他们的数据类型

还有别的办法吗

编辑以下评论

我使用head-n3 path/to/file获得了头部,结果如下:

NIM_EVENT_ID|NIM_EVENT_DATA_TYPE_ID|NIM_EVENT_TYPE_ID|EVENT_TIMESTAMP|EVENT_GMT_TIMESTAMP|PRODUCT_ISSUE_ID|NIM_TITLE_ID|NIM_ISSUE_ID|NIM_USER_ID|RECORD_ID|TRANSACTION_ID|DWELL_MINUTES|FREE_TRIAL_FLAG|UNLIMITED_FLAG|APPLICATION_VERSION_ID|DEVICE_GUID|DEVICE_INFO_ID|DEVICE_BRAND|DEVICE_PRODUCT|DEVICE_TYPE|DEVICE_HARDWARE|DEVICE_MANUFACTURER|DEVICE_MODEL|DEVICE_OS|DEVICE_OS_VERSION|DEVICE_DISPLAY_INFO|DEVICE_DISPLAY_SIZE|DEVICE_DISPLAY_ORIENTATION_ID|EVENT_VERSION|SOURCE_CREATE_TIMESTAMP|SOURCE_LAST_MODIFIED_TIMESTAMP|WORKFLOW_RUN_ID|ETL_CREATE_DATE|ETL_UPDATE_DATE|SOURCE_FILE_ID 103008184|879|883|2013-12-07 00:30:35.027000|2013-12-07 05:30:35.027000|-1|4800010|36000003|57700008|61906389|21385144|0|Y|Y||4c22c4a3-094a-476f-9a48-c67b15c2d3f7|-2|||||||||||887|2|2013-12-06 21:35:39.023000|2013-12-06 21:35:39.023000||2013-12-07 03:31:33.910000|2013-12-07 03:31:33.910000| 98500241|875|880|2013-12-07 15:43:36.984000|2013-12-07 20:43:36.984000|-1|-2|-2|82700012|63226292|||N|N|-i6.1.3-APPLE-3.10.0|45F4BCE1-A6DC-4A66-A071-7D628FC7522E|21|Apple|iPhone OS|iPad|iPad|Apple|iPad|iOS|6.1.3|iPad|DisplayMetrics{width=768.000000, height=1024.000000, scale=2.000000}|887|2|2013-12-07 12:45:50.099000|2013-12-07 12:45:50.099000||2013-12-07 19:31:34.470000|2013-12-07 19:31:34.470000| “尼姆”事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(事件)事件(GMT)事件(事件)事件(事件)事件(事件)事件(事件)事件)事件(事件)事件(事件)事件)事件(事件)事件(事件)时间戳(事件)事件)事件(事件)GMT)时间戳(事件)时间戳(事件)时间戳(事件)时间戳(事件)时间戳)事件(事件)事件)事件(事件)时间戳(事件)事件(事件)GMT)时间戳(事件)时间戳)时间戳(事件(事件)GMT)时间戳)时间戳)时间戳(事件(事件(事件)时间戳)时间戳)事件(事件(事件)时间戳)时间戳(事件(事件)时间戳)时间戳(事件)时间戳)事件(事件(事件)GMGMT)时间戳)时间戳)时间戳)|设备|产品|设备|类型|设备|硬件|设备|制造商|设备| M模型|设备|操作系统|设备|操作系统|版本|设备|显示|信息|设备|显示|大小|设备|显示|方向| ID |事件|版本|源|创建|时间戳|源|最后修改|时间戳|工作流|运行| ID | ETL |创建|日期| ETL 2013-12-7 7 7 7 7 7 7 7 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 7 7 7 7 7 7 7 7 7 7 7\124存存存存存存存存存存存存存存存存存存在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在在2013-06 21:35:39.023000 | 2013-12-06 21:35:39.023000 | 2013-12-07 03:31:33.910000 | 2013-12-07 03:31:33.910000| 2013-12-7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6.1.3 | iPad | DisplayMetrics{宽度=768.000000,高度=1024.000000,比例=2.000000}|887|2|2013-12-07 12:45:50.099000|2013-12-07 12:45:50.099000||2013-12-07 19:31:34.470000|2013-12-07 19:31:34.470000|
我猜我的朋友在这里告诉我的是,为了创建.SQL表,要在head和field信息中复制一个脚本?这就是我们正在做的吗?从头部复制格式,以便生成一个表来导入txt文件?

有很多方法可以做到这一点,这里有一种方法。这些步骤中的一些可以通过实用程序缩短—我假设您没有这些步骤

编写一个程序来读取文件,并将每行每个字段的长度打印到一个单独的文件中。因此,您将拥有像
field00.txt
field01.txt
等文件。 (注意:您可以使用任何文本编辑器和
RegEx
轻松完成此操作) 每个文件的内容如下所示:

14
12
15
现在您需要找到每个文件中的最大数量。编写程序或使用文本编辑器对文件进行排序

(注意:如果您对shell很在行,可以使用“剪切/排序”完成上述所有操作!)

此时,您将知道表中每个字段的最大长度。通过使用预览,您还可以推断数据类型。基于此信息,创建表的说明。尝试导入数据。如果失败,请查看错误消息并调整数据类型。再试一次,直到成功

编辑:只需阅读您的评论。下面是一些使用终端的内容:

终端命令

(警告:我现在没有访问Mac的权限,因此没有测试此功能)

首先,将每列写入其自己的文件:

cut -d'|' -f1 bigfile.txt > col01.txt
cut -d'|' -f2 bigfile.txt > col02.txt
cut -d'|' -f3 bigfile.txt > col03.txt
...
cut -d'|' -f20 bigfile.txt > col20.txt
然后找到每列的最大长度:

awk '{ if (length > max) max = length } END { print max } ' col01.txt
awk '{ if (length > max) max = length } END { print max } ' col02.txt
awk '{ if (length > max) max = length } END { print max } ' col03.txt
...
awk '{ if (length > max) max = length } END { print max } ' col20.txt
(注意:由于您使用的是Mac OS X,
wc-L
将不起作用。)

检查每列的前几个值,如下所示:

head col01.txt
head col02.txt
...
head col20.txt
现在您知道了每个列的数据类型和最大长度。在此基础上,声明/创建表

我是否必须手动查看输出并尝试确定新SQL表中的每个字段?是否有使用此输出的快捷方式

一个好的文本编辑器是你最好的朋友。以下是我在几分钟内与TextMate达成的共识

CREATE TABLE import\u TABLE
(
nim_事件识别码INT,
nim\u事件\u数据\u类型\u id INT,
nim\u事件\u类型\u id INT,
事件\时间戳日期时间,
事件\u gmt\u时间戳日期时间,
产品发布id INT,
nim_title_id INT,
nim_发行号_id INT,
nim_用户id INT,
记录id INT,
事务id INT,
停留分钟,
免费试用标志字符(1),
无限_标志字符(1),
应用程序版本id VARCHAR(128),
设备guid字符(37),
设备信息id VARCHAR(128),
设备品牌VARCHAR(128),
装置产品VARCHAR(128),
设备类型VARCHAR(128),
设备硬件VARCHAR(128),
设备制造商VARCHAR(128),
设备型号VARCHAR(128),
设备_os VARCHAR(128),
设备操作系统版本VARCHAR(128),
设备显示信息VARCHAR(128),
设备显示大小VARCHAR(128),
设备显示方向id INT,
事件_版本INT,
源\创建\时间戳日期时间,
源\上次\修改\时间戳日期时间,
工作流\u运行\u id INT,
etl_创建_日期日期时间,
etl_更新_日期日期时间,
源文件id INT
);
现在,为了能够控制插入的值,您可以利用会话变量和
加载数据填充
SET
子句。例如,要将表中缺少的值设置为
NULL
,可以执行以下操作

加载数据填充'/tmp/DATA.txt'
导入表格
以“|”结尾的字段
如果文件是在Windows计算机上创建的,则以“\n”或“\r\n”结尾的行
忽略1行--跳过标题行
(
@nim_事件id,
@nim\u事件\u数据\u类型\u id,
@nim\u事件类型\u id,
@事件时间戳,
@事件\u gmt\u时间戳,
@产品发布号,
@nim_title_id,
@nim_问题编号,
@nim_用户id,
@记录id,
@交易id,
@停留10分钟,
@免费试用旗,
@无限制旗帜,
@应用程序\u版本\u id,
@设备\u guid,
@设备信息id,
@设备品牌,
@d
+--------------+------------------------+-------------------+---------------------+---------------------+------------------+--------------+--------------+-------------+-----------+----------------+---------------+-----------------+----------------+------------------------+--------------------------------------+----------------+--------------+----------------+-------------+-----------------+---------------------+--------------+-----------+-------------------+---------------------+----------------------------------------------------------------------+-------------------------------+---------------+-------------------------+--------------------------------+-----------------+---------------------+---------------------+----------------+
| nim_event_id | nim_event_data_type_id | nim_event_type_id | event_timestamp     | event_gmt_timestamp | product_issue_id | nim_title_id | nim_issue_id | nim_user_id | record_id | transaction_id | dwell_minutes | free_trial_flag | unlimited_flag | application_version_id | device_guid                          | device_info_id | device_brand | device_product | device_type | device_hardware | device_manufacturer | device_model | device_os | device_os_version | device_display_info | device_display_size                                                  | device_display_orientation_id | event_version | source_create_timestamp | source_last_modified_timestamp | workflow_run_id | etl_create_date     | etl_update_date     | source_file_id |
+--------------+------------------------+-------------------+---------------------+---------------------+------------------+--------------+--------------+-------------+-----------+----------------+---------------+-----------------+----------------+------------------------+--------------------------------------+----------------+--------------+----------------+-------------+-----------------+---------------------+--------------+-----------+-------------------+---------------------+----------------------------------------------------------------------+-------------------------------+---------------+-------------------------+--------------------------------+-----------------+---------------------+---------------------+----------------+
|    103008184 |                    879 |               883 | 2013-12-07 00:30:35 | 2013-12-07 05:30:35 |               -1 |      4800010 |     36000003 |    57700008 |  61906389 |       21385144 |             0 | Y               | Y              | NULL                   | 4c22c4a3-094a-476f-9a48-c67b15c2d3f7 | -2             | NULL         | NULL           | NULL        | NULL            | NULL                | NULL         | NULL      | NULL              | NULL                | NULL                                                                 |                           887 |             2 | 2013-12-06 21:35:39     | 2013-12-06 21:35:39            |            NULL | 2013-12-07 03:31:34 | 2013-12-07 03:31:34 |           NULL |
|     98500241 |                    875 |               880 | 2013-12-07 15:43:37 | 2013-12-07 20:43:37 |               -1 |           -2 |           -2 |    82700012 |  63226292 |           NULL |          NULL | N               | N              | -i6.1.3-APPLE-3.10.0   | 45F4BCE1-A6DC-4A66-A071-7D628FC7522E | 21             | Apple        | iPhone OS      | iPad        | iPad            | Apple               | iPad         | iOS       | 6.1.3             | iPad                | DisplayMetrics{width=768.000000, height=1024.000000, scale=2.000000} |                           887 |             2 | 2013-12-07 12:45:50     | 2013-12-07 12:45:50            |            NULL | 2013-12-07 19:31:34 | 2013-12-07 19:31:34 |           NULL |
+--------------+------------------------+-------------------+---------------------+---------------------+------------------+--------------+--------------+-------------+-----------+----------------+---------------+-----------------+----------------+------------------------+--------------------------------------+----------------+--------------+----------------+-------------+-----------------+---------------------+--------------+-----------+-------------------+---------------------+----------------------------------------------------------------------+-------------------------------+---------------+-------------------------+--------------------------------+-----------------+---------------------+---------------------+----------------+